LomutoとHoare
Lomutoパーティションは、等しいキーをソートするときに問題がありますが、Hoareパーティションはそうではありません。
中央値から離れたピボットを使用する場合、両方のパーティション構成は等しく影響を受けます。
障害
の測定クイックソートの目的で選択する障害の測定は簡単です。
A:固定データは、ランダムデータと比較して、中央値からどのくらい離れていますか?
Lomutoパーティションの使用を主張し、重複する値が許可されていると想定する場合は、ランダム性に対する次のテストを追加する必要があります
。B:ランダムと比較した場合の重複要素の数。
もちろん、データセットで重複する値が許可されていると仮定してLomutoパーティションを評価することはかなりばかげています。したがって、おそらく事前に重複を排除するか、Hoareパーティションに切り替えるか、重複がまれであると想定する必要があります。
どちらの指標も、統計を使用して数量化するのは簡単です。
病理データを除外することができます。
ランダム性からのその他の逸脱は、クイックソートの分析の目的には関係ありません。ピボットが中央値に近い限り、病的ではないすべてのデータで正常に機能します。
ランダムからの距離は、クイックソート-病理学的であるには確かに大きくなければならないので、それを除外することができます。
実際のコードでは固定ピボットを使用しないでください固定ピボットを使用して実際のコード
を作成する場合は注意してください*)(そのピボットが何であっても)攻撃者がサービス拒否攻撃を仕掛ける可能性があるためです。その時点での病理学的値、したがって常にピボットとしてランダムな要素を選択する必要があります。
*)x個のピボットから最適なものを選択した場合は、複数のピボット。