ヒープソート対クイックソート対マージソート - 最も強力なソートアルゴリズムであります

このような問題は、ほとんどを有することが知られています。

最悪の分割を持つことになり、時間複雑度はO(N ^ 2)、なぜ高速であってもよいヒープソート下限O(nlgn)に達すると、アルゴリズムをソート比較的プログレッシブ最適であるが、高速行の特定の可能性がありますヒープソートより通常優れている実際の使用に来ましたの?

ちょうど昨日は、高速行の最適化についての記事を書いた、今日の比較は、それの複数の操作を行います。ソートアルゴリズムダイアグラムを初めて目:

Sortメソッド 平均ケース ベストケース 最悪の場合 補助スペース 安定
バブルソート O(n^2) O(n) O(n^2) O(1) 安定しました
単純な選択ソート O(n^2) O(n^2) O(n^2) O(1) 安定しました
直接挿入ソート O(n^2) O(n) O(n^2) O(1) 安定しました
シェルソート O(nlogn)〜O(N ^ 2) O(n^1.3) O(n^2) O(1) 不安定な
ヒープソート O(nlogn) O(nlogn) O(nlogn) O(1) 不安定な
マージソート O(nlogn) O(nlogn) O(nlogn) O(n) 安定しました
クイックソート O(nlogn) O(nlogn) O(n^2) (LOGN)〜(N) 不安定な

それは、ソートやクイックソートマージnlognレベルソートアルゴリズム、3、すなわち、ヒープの並べ替えの合計を、到着見ソートする唯一の最も安定したマージすることができます。それでは、なぜクイックソートの平均場合は最速ですか?

実際には、アルゴリズム解析は、大規模Oの役割は、下限の数を増やすのではなく、下限が与えられます。したがって、アルゴリズムの複雑さは、単に時間が同一の実装ではなく、様々なソートアルゴリズムの前のような異なる定数パラメータがたくさんの数式されている、データ量が増加し、同じアルゴリズムの時間コストの増加傾向として述べcは、cは、おそらく10〜100であるが、それは迅速なソート・ヒープ・ソートに大きなO.には影響を与えない一定のレベルであるため、それがためにある省略

また、同じアルゴリズムは、異なる人々がさまざまなシナリオの下で、コードの実行時間を記述する場合にも非常に異なる場合があります。ここでは、テストデータは次のとおりです。

测试的平均排序时间:数据是随机整数,时间单位是s
数据规模    快速排序       归并排序        希尔排序        堆排序
1000万       0.75           1.22          1.77          3.57
5000万       3.78           6.29          9.48         26.54  
1亿          7.65          13.06         18.79         61.31

ヒープソート各スタックとデータ交換の最大の下、ヒープの再上映、代わりにX調整のヒープのトップを取って、まだ非常に可能性がある(ヒープXの底が明らかにヒープの下に比較的小さな調整で、 )一番下になり、その後、ヒープの上部と再び最大交流し、その後はダウン調整し、ヒープソートは無駄な努力の多くを行って言うことができます。

、速い行最悪時間計算量が高いですが、彼らは一定であるものの、高速スイッチング時間と統計的な意味では、このようなデータの確率が非常に小さく表示され、行の交換プロセスでのヒープソート処理が、総括しかし、一定の時間がたくさんより悪いです。

おすすめ

転載: www.cnblogs.com/linhaostudy/p/11785412.html