素早い並びrdix sort.
-
29-09-2020 - |
質問
コーディング試験では、私はかつてこの質問をしました:
のみ登録整数のソート整数を昇順で並べ替えます。このアルゴリズムは、スピードを最も高速化したいときに使用しますが、スペースを節約したい場合も使用します。
オプションは次のとおりです。
- LSD基数
- マージ
- クイックソート
lsd基底と quicksort の間で引数を作ることができると思います。
Radix Sort は $ o(kn)$ 、 quicksort が $ O(n \ log n)$ と最悪の場合、 $ O(n ^ 2)$
私は答えとして基数並びを選びましたが、他の人が言わなければならなかったことに関して興味があります。
解決
これは...入力番号の数が $ n $ の場合、 $ \ theta(\ log n)$ ビット、最悪の場合の入力:
-
Radix Sortには、 $ o(n \ log n)$ 時間と $ O(n) $ 補助スペース。
-
固定またはランダムピボット選択を備えたQuickSortには、 $ O(n ^ 2)$ 最悪の場合の時間と $ O(\ log n)$ 補助スペース。
-
Mergesortには、 $ o(n \ log n)$ 時間と $ o(n)$ < /スパン>補助スペース
Radix SortとMerge Sortはこの設定で同等です。
ランダムなピボットの選択でQuickSortを使用すると、 $ o(n \ log n)$ の確率が高くなります。要素をカーディナリティが最も一定のファクタアパートにある2つのセットに分割するように決定的に選択的に選択すると、 $ O(n \ log)の最悪の時間の複雑さを備えたアルゴリズムが得られます。 n)$ と $ O(\ log n)$ 補助スペース。