C++ ile Sıralama Algoritmaları ve Performans Ölçümleri

C++ ile Sıralama Algoritmaları ve Performans Ölçümleri

Bu makale, C++ programlama diliyle kullanılan popüler sıralama algoritmalarını ve performans ölçümlerini ele alıyor Bubble sort, Selection sort, Insertion sort ve Quick sort algoritmaları detaylı olarak inceleniyor Hangi algoritmanın hangi durumda kullanılması gerektiği anlatılıyor Zaman karmaşıklığı farkları ve performans ölçümleri tablolarla verilerek açıklanıyor Sıralama işleminin boyutları daha büyük olduğunda performans sorunları oluşabileceği ve doğru algoritma seçimine önem verilmesi gerektiği vurgulanıyor

C++ ile Sıralama Algoritmaları ve Performans Ölçümleri

Bu makalede, C++ programlama dilinde yer alan sıralama algoritmaları ve bu algoritmaların performans ölçümleri üzerinde durulacaktır. Sıralama algoritmaları, programlama dünyasında oldukça önemli bir yere sahip olup, programların çalışma hızını büyük ölçüde etkileyebilirler. Bu nedenle, doğru algoritma seçimi ve performansının ölçümlenmesi hayati önem taşır.

Makalede, Bubble sort, Selection sort, Insertion sort ve Quick sort gibi popüler sıralama algoritmaları, detaylı açıklamalar ve örnek kodlarla incelenecektir. Ayrıca, her bir algoritmanın zaman karmaşıklığı ve performansı, en iyi ve en kötü senaryolarında karşılaştırılacaktır. Bunun yanı sıra, Quick sort'un performansı, Merge sort ile karşılaştırılacaktır.

Verilerin sıralanması önemli bir adım olduğundan, kullanılacak algoritmanın doğru seçilmesi büyük ölçüde önem taşır. Bu makalede, sıralama algoritmaları hakkında genel bir anlayış sağlanacak ve hangi algoritmanın hangi durumda kullanılması gerektiği daha iyi anlaşılacaktır.


Bubble Sort

Bubble sort, sıralama algoritmaları arasında en basit olanıdır ve herhangi bir diziyi büyüklük sırasına göre sıralar. Algoritma adını, elemanların doğru konumlarına "kabarcıklaşarak" yükselmesinden alır.

Bubble sort algoritması şöyle çalışır:

  • Diziyi baştan sona doğru tarar ve her bir elemanı bir sonrakiyle karşılaştırarak küçük olanı önceki elemanın yerine koyar.
  • Bu işlem, dizi sıralanana kadar devam eder.

Bubble sort algoritmasının kodları açıklamalı olarak aşağıdaki gibi yazılabilir:

for(int i=0;i<n-1;++i) // Dizinin boyutu n
    for(int j=0;j<n-i-1;++j) // En büyük eleman, her iterasyon sonrası sıralanmış olduğu için bir daha ele alınmamalıdır
        if(dizi[j]>dizi[j+1]) // Eğer elemanlar sıralı değilse, yer değiştirme işlemi yapılır
            swap(dizi[j],dizi[j+1]); // swap fonksiyonu, iki parametreyi yer değiştirir
return dizi; // Sıralanmış dizi geri döndürülür

Bubble sort algoritmasının zaman karmaşıklığı O(n²) olduğundan, daha büyük dizilerde performans sorunları ortaya çıkabilir. Ancak, küçük boyutlu diziler için tercih edilebilir olabilir.


Selection Sort

Selection sort, bir dizideki elemanları sıralamak için kullanılan bir sıralama algoritmasıdır. Bu algoritma, bir elemanı seçer ve onu listenin geri kalanı ile karşılaştırır. En küçük elemanı bulduğunda, onu listenin önüne koyar ve aynı işlemi kalan elemanlarla tekrarlar. Bu şekilde, tüm liste sıralanana kadar devam eder.

Selection sort, n^2 karmaşıklığına sahip bir algoritmadır ve büyük veri kümeleri için tavsiye edilmez. Ancak, küçük veri kümeleri için oldukça etkilidir ve diğer algoritmalara kıyasla daha az bellek kullanır. Ayrıca, selection sort instable bir algoritmadır, yani eşit elemanlar sıralanmış sıralamada orijinal sıralamalarını korumazlar.

Selection Sort Kod Örneği:
void selectionSort(int arr[], int n) {    int i, j, min_idx;       for (i = 0; i < n-1; i++) {        min_idx = i;        for (j = i+1; j < n; j++) {            if (arr[j] < arr[min_idx]) {                min_idx = j;            }        }        swap(&arr[min_idx], &arr[i]);    }}      

Bu kodu incelediğimizde, selection sort algoritmasının basit bir şekilde uygulandığını görüyoruz. İlk olarak, en küçük elemanın yerini belirlemek için dizi içinde gezinilir. Ardından, en küçük elemanın yerini bulduktan sonra, bu eleman ilk elemanın veya mevcut elemanların yerine yerleştirilir. Bu işlem, tüm elemanlar sıralanana kadar devam eder. Bu algoritma, bubble sort'a benzer, ancak daha az yer kaplar ve daha az değişim yapar.


Time Complexity Comparison

Bubble sort ve selection sort algoritmaları arasındaki en önemli fark, zaman karmaşıklığıdır. Bubble sort, en iyi senaryoda O(n) zamanında işlem yaparken, en kötü senaryoda O(n2) zamanında işlem yapar. Selection sort, en iyi senaryoda da O(n2) zamanında işlem yaparken, en kötü senaryoda da O(n2) zamanında işlem yapar.

Yani, Bubble sort algoritması, sıralanacak liste uzunluğu arttıkça daha fazla zaman alırken, Selection sort algoritması, uzunluğu ne olursa olsun aynı miktarda zaman alır. Dolayısıyla, Selection sort algoritması kısa listelerin sıralanmasında daha hızlıdır.

Bu farkın sebebi Bubble sort algoritmasının her adımda iki elemanın yer değiştirme işlemi yapmasıdır. Selection sort algoritması ise her adımda sadece bir elemanı yer değiştirir. Bu nedenle, Selection sort algoritması daha hızlı çalışır.

AlgoritmaEn İyi SenaryoOrtalama SenaryoEn Kötü Senaryo
Bubble SortO(n)O(n2)O(n2)
Selection SortO(n2)O(n2)O(n2)

Bu zaman karmaşıklığı farkı, sıralama işleminin boyutları büyüdükçe daha da belirgin hale gelir. Dolayısıyla, sıralanacak listenin uzunluğu önemli bir faktördür ve performansı etkiler.