質問

コーディング試験では、私はかつてこの質問をしました:

のみ登録整数のソート整数を昇順で並べ替えます。このアルゴリズムは、スピードを最も高速化したいときに使用しますが、スペースを節約したい場合も使用します。

オプションは次のとおりです。

  • 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)$ 補助スペース。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top