[解決済み] クイックソート ピボットの選択
2022-08-02 22:09:20
質問
Quicksortを実装する際に、ピボットを選択する必要があります。しかし、以下のような疑似コードを見ると、どのようにピボットを選択すればよいのかがよくわかりません。リストの最初の要素?他の何か?
function quicksort(array)
var list less, greater
if length(array) ≤ 1
return array
select and remove a pivot value pivot from array
for each x in array
if x ≤ pivot then append x to less
else append x to greater
return concatenate(quicksort(less), pivot, quicksort(greater))
どなたか、ピボットの選択の概念と、異なるシナリオが異なる戦略を必要とするかどうかを把握するのを助けていただけませんか。
どのように解決するのですか?
ランダムなピボットを選択することで、最悪のケースで O(n 2 ) パフォーマンスを最小にします (常に最初か最後を選択すると、ほぼソートされたデータやほぼ逆ソートされたデータで最悪のパフォーマンスが発生します)。 中央の要素を選択することは、ほとんどの場合において許容されるでしょう。
また、これを自分で実装する場合、インプレースで動作するアルゴリズムのバージョンがあります(つまり、2つの新しいリストを作成し、それらを連結することなく)。
関連
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[終了しました]
-
[解決済み] Bogosort (a.k.a Monkey Sort)よりも悪いソートアルゴリズムはあるのか?[クローズド]
-
[解決済み] 複雑さ O(log(n)) は O(sqrt(n)) と同等か?
-
[解決済み] バックトラックと深さ優先探索の違いは何ですか?
-
[解決済み] 最小ボトルネックスパニングツリーと最小スパニングツリーはどう違うのですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] なぜクイックソートはマージソートより優れているのですか?
-
[解決済み] ブルームフィルターを使用するメリットは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】決定木(比較ソートアルゴリズム)の葉の最短の深さ)
-
[解決済み] 放物線を点の集合にフィットさせる最速の方法?
-
[解決済み] 解いてみてください。T(n) = T(n-1) + n [重複] とする。
-
[解決済み] は、「減少しない」列が「増加する」のか?
-
[解決済み] 線形時間でのソート?[クローズド]
-
[解決済み] 最小ボトルネックスパニングツリーと最小スパニングツリーはどう違うのですか?
-
[解決済み] あるアルゴリズムの計算量がO(log log n)になる原因は何でしょうか?
-
[解決済み] Pythonでクイックソート
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[クローズド]
-
[解決済み] リストの並べ換えをすべて生成するアルゴリズム?