Seçmeli Sıralama
Sıralama O(n²) O(1)Sıralanmamış kısımda en küçük elemanı arar ve onu sıralı önekin bir sonraki konumuna takas eder.
23
7
41
15
3
34
9
28
8 eleman üzerinde Selection Sort başlıyor.
DeğişmezA[0..0-1] sıralı ve en küçük 0 değeri tutuyor — bir daha yer değiştirmeyecekler.
1/54
karşılaştırma0takas0i0j0min0
selection-sort.c
void selectionSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {int min = i;for (int j = i + 1; j < n; j++) {if (arr[j] < arr[min]) min = j;}if (min != i) {int tmp = arr[i];arr[i] = arr[min];arr[min] = tmp;}}}
Seçmeli Sıralama nasıl çalışır?
Sıralanmamış kısımda en küçüğü bul ve sıralı önekin bir sonraki yerine takas et. Önek her geçişte bir eleman büyür ve her eleman en fazla bir kez taşınır.
En iyi durum
En iyi durum yok — sıralı olsa bile tüm sıralanmamış kısmı tarar: O(n²) karşılaştırma.
En kötü durum
Yine O(n²) karşılaştırma; ama toplamda en fazla n−1 takas.
Ne zaman kullanılır?
Yazmanın pahalı olduğu durumlar (ör. flash bellek) — takas sayısını en aza indirir.