Menu
CoddyTech

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) % 10 mengambil 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 exp melampaui angka terbesar.

Coba sendiri

Pelajaran ini tidak memiliki tantangan kode.

quiz iconUji dirimu

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