1. SELECTION SORT ANLATIM
Selection sort çalışma mantığı olarak listedeki en küçük elemanı bulup, en küçük sayıyla baştaki sayıyı yer değiştirir. Daha sonra tekrar en küçük sayıyı arar ancak bu sefer en başa attığı sayıya bakmaz yani 2. elemandan (1. indexten ) itibaren aramaya başlar. Bu şekilde diziyi sıralı hale getirir. Aşağıda selection sortu aşama aşama anlatan bir örnek bulunmakta.
5 , 7 , 2 , 9, 6 , 1, 3 , 7 (en küçük 1)
1 , 7 , 2 , 9, 6 , 5, 3 , 7 (en küçük 2)
1 , 2 , 7 , 9, 6 , 5, 3 , 7 (en küçük 3)
1 , 2 , 3 , 9, 6 , 5, 7 , 7 (en küçük 5)
1 , 2 , 3 , 5, 6 , 9, 7 , 7 (en küçük 5)
1 , 2 , 3 , 5, 6 , 9, 7 , 7 (en küçük 6)
1 , 2 , 3 , 5, 6 , 9, 7 , 7 (en küçük 7)
1 , 2 , 3 , 5, 6 , 7,9 , 7 (en küçük 7)
1 , 2 , 3 , 5, 6 , 7,7 , 9 (en küçük 7)
2. ALGORITMA ANALIZI
Worst case : TERSTEN SIRALI DİZİ ilk olarak n elemana bakar sonra (n-1) sonra (n-2) : [ n*(n+1) ] / 2 = n^2 (Growth rate’de çarpılan ve toplanan değerlerin önemi yok).
Best case : SIRALI DİZİ sıralı olduğunu anlaması için yine dizinin sonuna kadar gitmeli : n^2
*** WORST = BEST ***
3. SELECTION SORT C# IMPLEMENTASYONU
public static void SelectionSort(List<double> arr) { int n = arr.Count; for(int i = 0; i < n - 1; i++) //List boyutu kadar dönen bir for döngüsü. { int min_idx = i; //ilk indexi tutar. (i) for (int j = i + 1; j < n; j++) //tuttugu indexten sonraki(i+1) en küçüğünü arar. if (arr[j] < arr[min_idx]) min_idx = j; //en küçük olanın konumu alınır. double temp = arr[min_idx]; //en küçük sayı geçiçiye atılır arr[min_idx] = arr[i]; //en küçük sayının index konumuna en baştaki atanır. arr[i] = temp; //en başa da en küçük sayı. } }