Taban Sıralaması
Sıralama O(d · (n + k)) O(n + k)Karşılaştırmasız sıralar: en düşükten en yüksek basamağa kadar her basamak için kararlı sayma geçişi yapar.
23
7
41
15
3
34
9
28
8 eleman üzerinde Radix Sort başlıyor.
DeğişmezDizi, işlenen tüm basamaklara göre sıralı. Her tur kararlı olduğu için önceki turlar bozulmaz.
1/38
hareket0sondaj0exp1i0
radix-sort.c
int getMax(int arr[], int n) {int mx = arr[0];for (int i = 1; i < n; i++)if (arr[i] > mx) mx = arr[i];return mx;}void countingPass(int arr[], int n, int exp) {int out[n], count[10] = {0};for (int i = 0; i < n; i++)count[(arr[i] / exp) % 10]++;for (int d = 1; d < 10; d++)count[d] += count[d - 1];for (int i = n - 1; i >= 0; i--)out[--count[(arr[i] / exp) % 10]] = arr[i];for (int i = 0; i < n; i++)arr[i] = out[i];}void radixSort(int arr[], int n) {for (int exp = 1; getMax(arr, n) / exp > 0; exp *= 10)countingPass(arr, n, exp);}
Taban Sıralaması nasıl çalışır?
Hiç karşılaştırma yapmaz. En düşük basamaktan başlayarak her basamağı kararlı bir sayma geçişiyle sıralar — geçişler kararlı olduğu için önceki basamakların sırası korunur.
En iyi durum
Az basamak (küçük anahtar aralığı): fiilen doğrusal, O(d·(n+k)).
En kötü durum
Çok basamak (dev anahtarlar) d'yi büyütür; kova belleği ekstradır.
Ne zaman kullanılır?
Sınırlı basamak sayılı büyük tamsayı veya sabit uzunluklu dize dizileri.