Skip to main content
Seçerek Sıralama (Selection Sort)

Seçerek Sıralama (Selection Sort) Sıralama Algoritmaları

Merhabalar , bu yazımızda sıralama algoritmalarının en önemlilerinden birisi olan Seçerek Sıralama (Selection Sort) ’ dan bahsedeceğiz .

Seçerek Sıralama(Selection Sort) Nedir ?

Seçerek Sıralama (Selection Sort) algoritması , sıralanmamış bir diziyi küçükten büyüğe doğru en küçük elemanı bulup , dizinin elemanları ile yer değiştirme yöntemini kullanarak bir sıralama yapar. Selection Sort algoritması , belirli bir dizide 2 alt diziyi tutar . Bunlar ;

1 – Sıralanmış olan alt dizi
2 – Henüz sıralanmamış olan kalan kısım

Seçerek Sıralama (Selection Sort) Algoritmasının Çalışma Prensibi Nedir ?

Seçmeli sıralama algoritmasında , dizinin başından ya da sonundan başlanır. Önce ilk eleman alınır ve daha sonra küme içerisindeki en küçük eleman aranır; bulunduğu zaman ilk eleman ile yer değiştirilir; daha sonra ikinci eleman alınır ve bu eleman dahil kalan elemanlar arasında ikinci en küçük eleman aranır ve ikinci elemana yerleştirilir. Bu işlem dizinin son elemanına kadar tekrarlanırsa dizi sıralanır .

FlowChart for Selection Sort (Akış Şeması)

Seçerek Sıralama ( Selection Sort)
Seçerek Sıralama ( Selection Sort)

Yukarıda ki şemada anlatılmak isteneni adım adım inceleyelim .

  1. START
  2. "arr" dizisinin içerisindeki eleman sayısını "n" değerine ata sonraki adıma geç.
  3. "i" değişkeni oluşturup 0 değerini ata sonraki adıma geç.
  4. Döngü içerisinde kontrol edelim eğer “i” küçükse "n-1"‘den sonraki adıma geç. Küçük değilse 12. adıma git.
  5. En küçük elemanın bulunduğu konumu yani "i" değişkenini "min_index" değişkenine ata sonraki adıma geç.
  6. "i+1" ‘ değişkenini "j" değişkenine ata sonraki adıma geç.
  7. "j" değişkeni "n" değişkeninden küçükse sonraki adıma geç. Küçük değilse 10. adıma git.
  8. "arr[j]" değişkeni "arr[min_index]" değişkeninden küçükse sonraki adıma geç.
  9. "min_index" değişkenine "j" değişkenini ata sonraki adıma geç.
  10. "j" değişkenini bir arttır ve 7. adıma git.
  11. Dizinin "arr[min_index]" indexinde ki değer ile "arr[i]" indexinde ki değeri yer değiştir sonraki adıma geç.
  12. "i" değişkenini bir arttır ve 4. adıma git.
  13. Sıralanmış olan "arr" dizisini ekrana yazdır sonraki adıma geç.
  14. END

Anlatılmak isteneni özet geçmek gerekirsek ;

dizi[] = 73 66 43 59 42
// Dizi içerisindeki en küçük değeri bul dizi[0...4]
// En küçük elemanı dizinin en başındaki ile yer değiştir dizi[0...4]
42 66 43 59 73 (42 -> 73 ) / dizi[4] -> dizi[0]

// Dizi içerisindeki en küçük değeri bul dizi[1...4]
// En küçük elemanı dizinin en başındaki ile yer değiştir dizi[0...4]
42 43 66 59 73 (43 -> 66 ) / dizi[2] -> dizi[1]

// Dizi içerisindeki en küçük değeri bul dizi[2...4]
// En küçük elemanı dizinin en başındaki ile yer değiştir dizi[0...4]
42 43 59 66 73 (59 -> 66 ) / dizi[3] -> dizi[2]

// Dizi içerisindeki en küçük değeri bul dizi[3...4]
// En küçük elemanı dizinin en başındaki ile yer değiştir dizi[0...4]
42 43 59 66 73

C dilinde Seçerek Sıralama (Selection Sort) algoritması

/ C dilinde Seçerek Sıralama ( Selection Sort ) 
#include <stdio.h> 
  
void swap(int *xp, int *yp) // iki değişkenin değerini yer değiştirmek için
{ 
    int temp = *xp; 
    *xp = *yp; 
    *yp = temp; 
} 
  
void selectionSort(int arr[], int n) 
{ 
    int i, j, min_idx; 
  
    // Sıralanmamış kısmın hareket sınırı yani bakılacak olan kısım
    for (i = 0; i < n-1; i++) 
    { 
        // Sıralanmamış kısımda en küçük değeri bul 
        min_idx = i; 
        for (j = i+1; j < n; j++) 
          if (arr[j] < arr[min_idx]) 
            min_idx = j; 
  
        // Bulunan minimum elemanı ilk elemanla yer değiştir 
        swap(&arr[min_idx], &arr[i]); 
    } 
} 
  
/* Diziyi ekrana yazdırmak için fonksiyon */
void printArray(int arr[], int size) 
{ 
    int i; 
    for (i=0; i < size; i++) 
        printf("%d ", arr[i]); 
    printf("\n"); 
} 
  
int main() 
{ 
    int arr[] = {64, 25, 12, 22, 11}; 
    int n = sizeof(arr)/sizeof(arr[0]); 
    selectionSort(arr, n); 
    printf("Sorted array: \n"); 
    printArray(arr, n); 
    return 0; 
} 

Sıralama algoritmaları ile ilgili daha fazla yazımızı okumak için http://kodlar.net/ ‘ i takip edebilirsiniz . Bu konu hakkında daha fazla bilgi ve daha fazla dökümana sahip olmak için burayı ziyaret edebilirsiniz .

Emre Sualp

Kocaeli Üniversitesi Bilgisayar Mühendisliği 4. sınıf öğrencisiyim .Java , Javascript ve Android programlama ile ilgileniyorum.Bildiklerimi aktarmak ve yeni öğrendiğim konuları pekiştirmek için yazılarımı sizlerle paylaşacağım.

One thought to “Seçerek Sıralama (Selection Sort) Sıralama Algoritmaları”

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir