Radix Sortは、桁ごとにデータをソートする方法です。まず、最も低い桁から最も高い桁まで順番に処理を行います。各桁ごとにデータをバケットに分割し、それぞれのバケット内でソートします。この処理を最高桁まで繰り返すことで、データ全体がソートされます。
Radix Sortは、安定なソートアルゴリズムであり、比較に基づかないため、データの特性によっては非常に高速に動作します。また、データの範囲に依存せず、一定の時間計算量を持つため、大規模なデータセットにも適しています。
以下に、Radix Sortの実装例を示します。ここでは、整数のソートを例に取ります。
def radix_sort(arr):
max_value = max(arr)
num_digits = len(str(max_value))
for digit in range(num_digits):
buckets = [[] for _ in range(10)]
for num in arr:
digit_value = (num // (10 digit)) % 10
buckets[digit_value].append(num)
arr = []
for bucket in buckets:
arr.extend(bucket)
return arr
# 使用例
arr = [123, 45, 6789, 321, 1, 9, 0]
sorted_arr = radix_sort(arr)
print(sorted_arr)
この実装では、radix_sort
関数がRadix Sortの手順を実行し、ソートされた結果を返します。max_value
を用いて最大桁数を求め、各桁ごとにバケットを作成し、データを分割します。最後に、バケットからデータを取り出して結合することで、ソートされた配列が得られます。
以上が、Radix Sortの解説と実装例です。このアルゴリズムは、大量のデータを効率的にソートするための重要な手法です。