Python カウントソート
カウントソートの核となるのは、入力されたデータ値をキーに変換し、追加で確保した配列空間に格納することです。線形時間計算量のソートとして、カウントソートは入力データが確定した範囲の整数であることを要求します。
例
def countSort(arr):
output = [0 for i in range(256)]
count = [0 for i in range(256)]
ans = ["" for _ in arr]
for i in arr:
count[ord(i)] += 1
for i in range(256):
count[i] += count[i-1]
for i in range(len(arr)):
output[count[ord(arr[i])]-1] = arr[i]
count[ord(arr[i])] -= 1
for i in range(len(arr)):
ans[i] = output[i]
return ans
arr = "wwwサンプルcom"
ans = countSort(arr)
print ( "文字配列ソート %s" %("".join(ans)) )
上記のコードを実行すると、出力結果は以下の通りです:
符数组排序 bcmnoooruwwwその他の拡張
Python3 例