十大ソートアルゴリズム——カウントソート
1094 ワード
以下は個人学習ノートの整理です.
原理:バケツソートの思想は、バケツソートの特例にすぎない.
手順:は、各データの出現回数を統計するためのリストを定義する. 上記リスト要素を左から右への順に加算する. は、ソート後のシーケンスを格納するためのリストを定義する. は元のシーケンスの最後の要素からスキャンを開始し、対応するカウントリストの値-1はソートリストの下付きであり、対応する値はソートリストの対応する値である.
実装コード(python):
複雑度解析:-空間複雑度空間複雑度O(n)
-時間複雑度–最適時間複雑度:O(n)-最悪時間複雑度:O(nlogn)-平均時間複雑度:O(n)
元のソートアルゴリズムに属するかどうか:元のソートアルゴリズムではありません
安定性あんていせい:安定性あんていせい
適応範囲:外部ソートに適応する、すなわちデータ量が比較的大きいが、データ範囲が比較的小さいソート
原理:バケツソートの思想は、バケツソートの特例にすぎない.
手順:
実装コード(python):
import itertools
def counting_sort(alist):
' , , '
if len(alist) <= 1:
return alist
# ,
counts = [0] * (max(alist) + 1)
for num in alist:
counts[num] += 1
#
counts = list(itertools.accumulate(counts))
# ,
sorted_list = [0] * len(alist)
# , -1 ,
for i in reversed(alist):
index = counts[i] - 1
sorted_list[index] = i
counts[i] -= 1
alist[:] = sorted_list
return alist
複雑度解析:-空間複雑度空間複雑度O(n)
-時間複雑度–最適時間複雑度:O(n)-最悪時間複雑度:O(nlogn)-平均時間複雑度:O(n)
元のソートアルゴリズムに属するかどうか:元のソートアルゴリズムではありません
安定性あんていせい:安定性あんていせい
適応範囲:外部ソートに適応する、すなわちデータ量が比較的大きいが、データ範囲が比較的小さいソート