Menu
Coddy logo textTech

Pseudo Code

Coddyの「Radix Sort - DSAシリーズ」コースのレッスン 4/9。

countingSortByDigit(array, exp):
   n = length(array)
   output = array of size n
   count = array of 10 zeros
   for each x in array:                 # 各桁をカウント
      count[(x / exp) % 10] += 1
   for d from 1 to 9:                   # 累積和を計算 -> 配置位置の決定
      count[d] += count[d - 1]
   for k from n-1 down to 0:            # 後ろから配置(安定性を維持)
      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 は位取りの値です。1は1の位、10は10の位、100は100の位を表します。(x / exp) % 10 によってその桁の数字を取り出します。
  • countingSortByDigit は単一の桁に対する安定ソートです。各数字が何回現れるかをカウントし、それらのカウントを配置位置に変換してから、順序を維持するために要素を後ろから前に配置します。
  • radixSort は、このパスを各桁に対して1回ずつ実行し、exp が最大値を超えた時点で停止します。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Radix Sort - DSAシリーズのすべてのレッスン