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.

Selection Sort

Ş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ı:

outPut

Kaynak kod ve makale için tıklayınız..