Seçmeli
sıralama algoritması, küçük boyutlu dizileri sıralarken veya
dizinin bir bölümü sıralı ise yer değiştirme işlemi
yapılmadığı için tercih edilir.
Algoritmanın
çalışma mantığı şu şekildedir.
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.
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.
Algoritmanın
karmaşıklığı
Seçmeli sıralama algoritması listenin en küçük elemanının nerede olduğunu bilmediği ve her bir eleman için tüm elemanlarla karşılaştırma yaptığı için liste içindeki elemanların rastgele sıralanmış ya da eşit elemanlardan oluşmasını dikkate almaz, bu sebeple seçmeli sıralama algoritması her durumda O(n^2) karmaşıklığıyla çalışır.
Seçmeli sıralama algoritması listenin en küçük elemanının nerede olduğunu bilmediği ve her bir eleman için tüm elemanlarla karşılaştırma yaptığı için liste içindeki elemanların rastgele sıralanmış ya da eşit elemanlardan oluşmasını dikkate almaz, bu sebeple seçmeli sıralama algoritması her durumda O(n^2) karmaşıklığıyla çalışır.
Örnek:
1.
(
5 1 4 2 8 ) \to ( 1 5 4 2 8 )
i=0
minIndis=0
(5 değeri) ile baslar j=1 (1 değeri) en küçük olduğundan
minIndis=1 olur değiştiririz.
2.(
1 5 4 2 8 ) \to ( 1 2
4
5 8 )
i=1
minIndis=1 (5 değeri) ile baslar j=3 (2 değeri) en küçük
olduğundan minIndis=3 olur değiştiririz.
3.(
1 2
4
5
8 ) \to ( 1 2
4
5
8 )
Döngümüz
devam edecektir ama sıralama işlemi bu adımda bitti.Seçmeli sıralama algoritması java kodları
public static void secmeliSiralama(int[] dizi) {
int yedek;
int minIndis;
for (int i = 0; i < dizi.length; i++) {
minIndis = i;
//Son indisten başlayarak karşılaştırmaya devam ediyoruz
for (int j = i; j < dizi.length; j++) {
//minIndis den daha küçük değer varsa indisi değiştiriyoruz
if (dizi[j] < dizi[minIndis]) {
minIndis = j;
}
}
//burada değiştirme işlemini yapıyoruz
yedek = dizi[i];
dizi[i] = dizi[minIndis];
dizi[minIndis] = yedek;
}
}
Kodlara ulaşmak için github adresine gidin