Pseudocode
Pelajaran 4 dari 9 dalam kursus Radix Sort, Seri DSA di Coddy.
countingSortByDigit(array, exp):
n = length(array)
output = array of size n
count = array of 10 zeros
for each x in array: # tally each digit
count[(x / exp) % 10] += 1
for d from 1 to 9: # running totals -> positions
count[d] += count[d - 1]
for k from n-1 down to 0: # place from the back (stable)
d = (array[k] / exp) % 10
count[d] -= 1
output[count[d]] = array[k]
return output
radixSort(array):
max = largest value in array
exp = 1
while max / exp > 0:
array = countingSortByDigit(array, exp)
exp = exp * 10- exp adalah nilai tempat: 1 untuk satuan, 10 untuk puluhan, 100 untuk ratusan.
(x / exp) % 10mengambil digit tersebut. - countingSortByDigit adalah pengurutan stabil berdasarkan satu digit: fungsi ini menghitung kemunculan setiap digit, mengubah hitungan tersebut menjadi posisi, lalu menempatkan elemen dari belakang ke depan untuk mempertahankan urutannya.
- radixSort menjalankan tahap tersebut satu kali untuk setiap digit, lalu berhenti saat
expmelampaui angka terbesar.
Coba sendiri
Pelajaran ini tidak memiliki tantangan kode.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Radix Sort, Seri DSA
Latihan sendiri: Compiler C online