Time and Space Complexity
Coddyの「カウンティングソート - DSAシリーズ」コースのレッスン 7/9。
時間計算量:
- O(n + k)
- ここで n は要素数、k は値の範囲 (max + 1) です。カウントするために1回、再構築するためにカウント配列を1回走査します。
- k が小さく固定されている場合、これは実質的に O(n) となり、比較ソートの O(n log n) よりも高速です。
空間計算量:
- O(n + k)
- カウント配列は O(k) を使用し、出力は O(n) を使用します。
まとめ:
- 計数ソート(Counting Sort)は、安定した非比較ソートであり、小さな整数の範囲に対して線形時間で実行されます。
- 値の範囲 k が非常に大きい場合、カウント配列が巨大になるため、適していません。このバージョンでは非負の整数を想定しています。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
カウンティングソート - DSAシリーズのすべてのレッスン
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)