Ocak 30th, 2010Sıralama Algoritmaları -4
Seçmeli Sıralama ( Selection Sort )
Bu sıralama algoritmalarının en kolayı diyebiliriz. Zaten işleme şeklini adından alıyor. Önce dizinin başından ya da sonundan bir seçim yapılır daha sonra dizideki en küçük eleman tespit edilir ve seçilen eleman ile dizinin en küçük değeri yer değiştirir. Daha sonra ikinci küçük eleman bulunur ve ikinci elemanlar yer değiştirilir bu işlem dizinin tüm elemanları yer değiştirene kadar sürer.

Şekil üstünde algoritmanın çalışmasını görelim. Başlangıçta 23,78,45,8,32,56 gibi bir dizimiz var dizinin ilk elemanı olan 23 sayısını seçiyoruz. Dizinin en küçük elemanını arıyoruz ve 8 olarak buluyoruz 8 ile 23 indeks olarak yer değiştiriyor sonra dizinin 2. en küçük elemanını olan 78’i buluyoruz 2. eleman ( 23 ) ile 2. küçük elemanı yer değişitiriyoruz bu işlem dizi sonuna kadar böyle devam ediyor.
Uygulama:
using System; class demoSelectSort { public static void selectSort(int [] dizi) { int enKucuk; // en küçük eleman için indeks değerini saklayacak değişken // ilk elemanı başta seçtiğimiz için turSayisi dizinini uzunluğundan bir olucak for ( int turSayisi = 0; turSayisi < dizi.Length - 1; turSayisi++ ) { enKucuk = turSayisi; //Dizinin İlk elemanını seçelim // Şimdi dizinin en küçük elemanını bulalım for ( int indeks=turSayisi+1; indeks < dizi.Length; indeks++ ) { if ( dizi[ indeks ] < dizi[ enKucuk ] ) enKucuk = indeks;//Bulunan en küçük elemanın indeks değerini alıyoruz }//en küçük elemanı bul int gecici = dizi[ turSayisi ]; // ilk seçtiğimiz elemanı gecici değişkenine aktarıyoruz /* Bulduğumuz en küçük elemanla seçtiğimiz elemanın yerini değiştiriyoruz*/ dizi[ turSayisi ] = dizi[ enKucuk ]; dizi[ enKucuk ] = gecici; // Seçtiğimiz elemanı en küçük elemanın yerine koyuyoruz } } // end selectSort static void yazdir(int [] dizi) { foreach (int i in dizi) { Console.Write(i+","); } Console.WriteLine(); Console.WriteLine(); }//end yazdir static void Main() { int [] dizi={23,78,45,8,32,56 }; Console.Write("Sıralanmamış dizi : "); yazdir(dizi);//Sıralanmamış diziyi yazdır selectSort(dizi);//Sıralama işlemini yap Console.Write("Sıralanmış dizi : "); yazdir(dizi);//Sıralanmış diziyi yazdır }//main end }//--class end
Ekran Çıktısı:
