Professional Documents
Culture Documents
7 Veriyapilari
7 Veriyapilari
Kaynak
• Algoritma Geliştirme ve Veri Yapıları, Toros Rifat ÇÖLKESEN,
Papatya Yayıncılık, 3. Basım
• Uygulama Yazılımı: Dev-C++
(https://sourceforge.net/projects/orwelldevcpp/)
Sıralama
• Sıralama bilgilerin/verilerin belirli bir anahtar sözcüğe göre belirli bir
anlamda sıralı duruma getirilmesidir. Örneğin sayıları küçükten büyüğe
veya büyükten küçüğe sıralama, sözcükleri alfabetik sıraya göre sıralama
vb.
• Sıralama işleminde bir anahtar sözcük kullanılır ve bu sözcük sıralamada
ana unsurdur. Anahtar sözcük verinin bir kısmı olabileceği gibi tamamı da
olabilir.
• Bir sıralama algoritması için önemli unsurlar, yürütme zamanı ve gerekli
bellek alanı ihtiyacıdır.
• Birçok farklı sıralama algoritması vardır. Aşağıda en yaygın olarak bilinen
sıralama algortimaları verilmiştir.
}
}
int main()
{
int B[]={13,12,15,1,9,24,50,1,8,12}; int k;
cout<<"Siralanmamis dizi : "<<endl<<endl;
for(k=0;k<10;k++)
printf("%d \t",B[k]);
cout<<endl<<endl<<"Araya Ekleme Siralama ile Siralaniyor : ..."<<endl<<endl;
arayaEkleme(B,10);
cout<<"Siralanmis dizi : "<<endl<<endl;
for(k=0;k<10;k++)
printf("%d \t",B[k]);cout<<endl<<endl;
system("pause");
return 0;
} //Devami diğer sayfada
Araya Ekleme Esaslı Sıralama(Örnek Kod)
}
}
Selection Sort (Seçmeli Sıralama)
• Seçmeli algoritmada dizinin bir ucundan (örn başından) başlanır. İlk eleman alınır ve kendisi dahil en küçük eleman aranır; en küçük
bulunduğu zaman ilk eleman ile yer değiştirilir; daha sonra ikinci eleman alınır ve kendisi dahil kalan elemanlar arasında ikinci küçük
eleman aranır ve ikinci elemanla yer değiştirilir. Bu işlem dizinin son elemanına kadar devam eder ve dizi sıralanmış olur.
• Seçmeli sıralama algoritmasının karmaşıklığı 𝑂 𝑛2 dir.
• Aşağıda örnek bir sıralama verilmiştir.
}
}
Kabarcık Sıralama (Bubble Sort)
• Sıralanacak elemanlar üzerinde bir yönden diğer yöne doğru
ilerlerken komşu iki elemanın sıraya girecek şekilde
yerdeğiştirmesi esasına dayanır. Yer değiştirme işleminde
komşu iki eleman karşılaştırılır ve uygun yerlerde değillerse
yerleri değiştirilir.
• Bu işlemler sıralama bitene kadar devam eder. Elemanlar
üzerindeki bir tur dolaşma bir elemanın gerçek yerine
oturmasını sağlar. Dolayısıyla işleme yerine oturmayan
elemanlardan devam edilir.
• Kabarcık sıralamada iki çevrim kullanılır. Her çevrimde bir
eleman sıralı duruma geldiği için ikinci çevrim her seferinde bir
eksik yapılır. Bu davranış deniz kıyısına vuran dalgaların
hareketine benzetildiği için Kabarcık Sıralama Algoritması
denilmiştir.
Kabarcık Sıralama (Bubble Sort)
• Aşağıda örnek bir dizi üzerinde kabarcık sıralama algoritması
verilmiştir. Her bir sütünda dizinin i ile belirtilen iterasyon
sonucundaki hali verilmiştir. Oklar ise yer değiştirmeyi
göstermektedir.
• Kabarcık sıralama algoritmasının algoritma karmaşıklığı 𝑂 𝑛2 dir.
void merge(int arr[], int l, int m, int r);void mergeSort(int arr[], int l, int r);
int main()
{ int B[]={13,12,15,1,9,24,50,1,8,12};
int diziboyutu = sizeof(B) / sizeof(B[0]);int k;
cout<<"Siralanmamis dizi : "<<endl<<endl;
for(k=0;k<10;k++)
printf("%d \t",B[k]);
cout<<endl<<endl<<"Birlesimli Siralama ile Siralaniyor : ..."<<endl<<endl;
mergeSort(B, 0, diziboyutu - 1);
cout<<"Siralanmis dizi : "<<endl<<endl;
for(k=0;k<10;k++)
printf("%d \t",B[k]);cout<<endl<<endl;
system("pause");return 0;
} // Devami diğer sayfada
Birleşimli Sıralama (Örnek Kod)
void merge(int arr[], int l, int m, int r)
{ int i, j, k; int n1 = m - l + 1;int n2 = r - m;int L[n1], R[n2];
for (i = 0; i < n1; i++) L[i] = arr[l + i];
for (j = 0; j < n2; j++) R[j] = arr[m + 1 + j];
i = 0;j = 0;k = l;
while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;}
else {arr[k] = R[j];j++;}
k++;}
while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}
void mergeSort(int arr[], int l, int r)
{ if (l < r) { int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
merge(arr, l, m, r);
}
}