Seçmeli sıralama

Vikipedi, özgür ansiklopedi
Atla: kullan, ara
Seçmeli sıralama
Seçmeli sıralama algoritması
Genel Bilgiler
Sınıf: Sıralama algoritması
Veri yapısı: Dizi
Zaman karmaşıklığı: О(n²)
Alan karmaşıklığı: toplamda О(n), ek alan O(1)
En iyi: Genellikle değil

Seçmeli Sıralama, bilgisayar bilimlerinde kullanılan karmaşıklığı bir sıralama algoritmasıdır. Karmaşıklığı \mathcal{O}(n^2) olduğu için büyük listeler üzerinde kullanıldığında verim sağlamaz ve genel olarak benzeri olan eklemeli sıralamadan daha başarısızdır. Seçmeli sıralama yalın olduğu ve bazı durumlarda daha karmaşık olan algoritmalardan daha iyi sonuç verdiği için tercih edilebilir.

Yöntem[değiştir | kaynağı değiştir]

Seçmeli Sıralama'nın nasıl çalıştığını gösteren görüntü

Algoritma aşağıdaki gibi çalışır:

  1. Listedeki en küçük değerli öğeyi bul.
  2. İlk konumdaki öğeyle bulunan en küçük değerli öğenin yerini değiştir.
  3. Yukarıdaki adımları listenin ilk elemanından sonrası için (ikinci elemandan başlayarak) yinele.

Sözde Kodu[değiştir | kaynağı değiştir]

A sıralanacak öğeler kümesi, n ise A'daki öğe sayısıdır. Dizi 0 numaralı dizinle başlamaktadır.

for i ← 0 to n-2 do
    min ← i
    for j ← (i + 1) to n-1 do
        if A[j] < A[min]
            min ← j
    swap A[i] and A[min]

Seçmeli Sıralama Algoritmasının Örnek Kodu[değiştir | kaynağı değiştir]

public int[] secmeliSiralama(int[] dizi)
{
    int enkucuk, yedek;
    for (int i = 0; i < dizi.Length - 1; i++)
    {
         enkucuk = i;
         for (int j = i + 1; j < dizi.Length; j++)
             if (dizi[j] < dizi[enkucuk])
                 enkucuk = j;
         if (enkucuk != i)
         {
             yedek = dizi[i];
             dizi[i] = dizi[enkucuk];
             dizi[enkucuk] = yedek;
         }
     }
     return dizi;
}
Yukarıdaki şekil, 6 elemanlı içeriği karışık olarak verilmiş bir bir sayı dizisinin Seçmeli Sıralama algoritması kullanılarak nasıl küçükten-büyüğe doğru sıralandığını göstermektedir. 1. adımda dizinin ilk elemanı (6) alınır. Bu eleman diğer 5 eleman ile karşılaştırılır. Eğer bulunan eleman(1) ilk elemandan küçükse 1.elman ile yer değiştirilir. 2. adımda dizinin ikinci elemanı(3) alınır. Bu eleman kalan 4 eleman ile karşılaştırılır. Eğer bulunan eleman(2) ikinci elemandan küçükse 2. eleman ile yer değiştirilir ve bu işlem dizi sonuna kadar devam eder. Böylelikle dizi küçükten-büyüğe sıralanmış olur.

Diğer Sıralama Algoritmaları[değiştir | kaynağı değiştir]

Dış bağlantılar[değiştir | kaynağı değiştir]