私は試験を受けており、この試験の大きな部分はクイックソートアルゴリズムになります。誰もが知っているように、最良のケースのシナリオであり、実際にはこのアルゴリズムの平均ケースはO(nlogn)
です。最悪のシナリオはO(n^2)
です。クイックソートの奥行き複雑度
私はそれを説明する方法を知っています:選択されたピボットが配列の最小値または最大値になると、n
クイックソートコールが発生し、n
時間(私はパーティション操作を意味する)。私は正しい?
ここでは最高/平均の場合です。私はCormensの本を読んだので、その本のおかげで多くのことを理解しましたが、クイックソートアルゴリズムに関しては、O(nlogn)
の複雑さを説明する数式に焦点を当てています。私はちょうどなぜそれがO(nlogn)
であるかを知りたがっていて、数学的な証明にはならなかった。今のところ、Wikipediaの説明だけを見てきました。私たちの配列を毎回n/2, n/2+1
の部分に分割するピボットを選択すると、深度がlogn
の呼び出しツリーがありますが、それが真であるかどうかわかりませんもしそうなら、それはなぜlogn
ですか?
インターネット上にクイックソートをカバーする多くの資料があることは知っていますが、実装のみをカバーしているだけで、説明していない複雑さだけを伝えています。
log2は何ですか?再帰の各レベルで残りの作業を半分に分割することの効果を理解していますか? –
はい、「2^k = n」のような数字「k」を見つける必要があります。 – Frynio
はい、n/2、n/4、n/8、定義上、log2(n)項。 – Dukeling