デュアルピボットクイックソートとクイックソートの違いは何ですか?
2023-10-16 23:43:51
質問
デュアルピボットクイックソートは初めて見ました。
クイックソートのアップグレード版なのでしょうか?
また、デュアルピボットクイックソートとクイックソートの違いは何でしょうか?
どのように解決するのですか?
Javaドキュメントにこんなのがありました。
ソートアルゴリズムはDual-Pivot Quicksortです。 Vladimir Yaroslavskiy, Jon Bentley, and Joshua Blochによるものです。このアルゴリズムは は、他のクイックソートが二次関数的に劣化するような多くのデータセットで O(n log(n))の性能を提供します。 このアルゴリズムは、他のクイックソートの性能が2次関数的に低下するような多くのデータセットにおいて、O(n log(n))の性能を提供し、一般的に 従来の(1ピボット)クイックソートの実装よりも高速です。
そして、Googleの検索結果でこんなのを見つけました。 クイックソートアルゴリズムの理論。
- 配列からピボットと呼ばれる要素を選びます。
- 配列の順番を変更し、ピボットより小さい要素はすべてピボットの前に、ピボットより大きい要素はすべてピボットの後に来るようにします。 ピボットより小さい要素はピボットの前に、ピボットより大きい要素はピボットの後に来るように配列を並べ替えます。 どちらかになります)。このように分割した後、ピボット要素は最終的な位置になります。
- より小さい要素の部分配列とより大きい要素の部分配列を再帰的にソートします。
比較すると、デュアルピボット・クイックソート。
- 小さな配列 (length < 17) には、挿入ソート アルゴリズムを使用します。
- 2つのピボット要素P1、P2を選ぶ。例えば、最初の要素 a[left]をP1、最後の要素a[right]をP2として得ることができます。
-
P1はP2より小さくなければならず、そうでなければ入れ替わります。ということで、以下のようなパーツがあります。
- P1より小さい要素を持つ、left+1 から L-1までのインデックスを持つパートI。
- P1以上P2以下の要素を持つ、LからK-1までのインデックスを持つパートII。
- G+1からright-1までのインデックスを持ち、P2より大きい要素を持つパートIII。
- 部分IVはKからGまでのインデックスを持つ検査される残りの要素を含んでいます。
- パートIVからの次の要素a[K]は、2つのピボットP1およびP2と比較されます。 と比較され、対応するパートI、II、またはIIIに配置されます。
- ポインタL、K、Gが対応する方向に変更される。
- K≦Gの間、手順4~5を繰り返す。
- ピボット要素P1はパートIの最後の要素と入れ替わります。 ピボット要素P2はパートIIIから最初の要素と入れ替わる。
- パートI、パートII、パートIIIごとにステップ1〜7が再帰的に繰り返されます。
関連
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
API の戻り値を処理するために ResponseEntity を使用する
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Javaでよくある構文エラー
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
配列定数は初期化子でのみ使用可能です。
-
Javaがテキストファイルを読み込む
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
maven レポート エラー 解決不可能な親POM
-
API の戻り値を処理するために ResponseEntity を使用する
-
Java:未解決コンパイル問題の解決方法
-
アクセス制限の解決方法: ---- in Java