[ジャワ] 9つのソートアルゴリズムの概要(及びアプリケーションシナリオの複雑さ)


1、バブルソート、好ましくは関係なく比較するどの配列、nは(N-1)/ 2回、最悪平均時間計算量は O(n²)、交換するために必要な一時的な変数であります配列データの位置、空間複雑さはO(1)です。

    最適化:ループは一度、整然とした、Ruoguo秩序終了かどうかを決定するためにフラグを使用し、時間複雑度はO(N)です。

図2に示すように、選択ソートは、バブルソート、選択ソート、N(N-1)であるものにも同じ配列比較/ 2倍改善され、好ましくは、最悪の平均時間計算量もO(n²あります)、配列位置内でデータを交換するために必要な一時変数は、空間の複雑さは)O(1です。

図3に示すように、挿入ソート、順序が逆であれば配列が完全に時間の複雑さを移動させることなく、限り比較挿入ソートn回として、順序付けされた場合には、O(n²)とモバイルOを比較するために、挿入ソートO(N)である(n² )、平均的な複雑さは、好ましくは、O(N)O(n²)は、最悪の(1)、限り、二次区分処理空間として、Oの空間複雑性O(n²)です。

図4に示すように、クイックソートは、好ましくは、O(nlogn)は、平均の場合の時間複雑度は、O(n²)であるO(nlogn)、最悪の場合は、元々 、シーケンス順序付けされ、空間的複雑さは、クイックソートと理解することができます再帰の深さは、平均で、スタックに依存している再帰的を達成するために、再帰的LOGN時間は、平均的な空間計算量はO(LOGN)です。

図5は、マージソート、空間的複雑度をマージした結果を格納するために一時的TEMP []が必要であり、O(n)は、時間複雑度は、O(nlogn)である空間的複雑さはOにO(N)から減少されてもよい(1)しかしながら、O(nlogn)による時間複雑反対側はO(n²)に上げました。

図6に示すように、ヒープ・ソート時間複雑さ、主に初期化処理および要素の再構成は、ヒープスタック時間複雑度を変更した後スタックは、初期のO(n)を内蔵したとき、それぞれがプロセスの最大数、時間複雑さを選択した後、ヒープ・スタックを再構築O(nlogn)の程度、平均ヒープソートするように、好ましくは、O(nlogn)の最悪時の複雑さ、ヒープソートインサイチュシークエンス、一定の空間複雑性O(1)です。

7、ヒル仕分けその複雑さの時間複雑分析、1はまだちょうどライン上でその結論、覚えて、それを証明することができたいくつかの増分配列の複雑{1,2,4,8を、...}このシーケンスが良いの増分シーケンスではありません、増分時間の複雑さ(最悪の場合)の順序はO(n²)で、Hibbardは、別の増分シリーズ{1,3,7を提示し... 、2は、最悪の場合は、時間を実行している(N ^ 1.5)O、Sedgewickが提案されているいくつかの増分配列、このような配列(最悪の場合)の時間計算量はO、K-1}である^(N ^ 1.3)最高のシーケンスであり、1,5,19,41,109 {...}、配列データの位置を交換するために必要な一時変数、空間的複雑度はO(1)です。

8、基数ソート Nレコードのキーワードは、Dビットである場合、dはオーバー実行しなければならない、(N + r)はOの分布および収集を行う際、トータルの時間複雑さ O(D(Nの+ R))。アルゴリズムの空間の複雑さはO =分布素子、空間のタブ使用時に、空間の複雑さはO(R + N)であることである (N)

9.バケットソート:

平均時間の複雑さ

直接挿入、選択ソート、バブル:O(N2)は、一般的に、単純なソートされ

O(nlog2n):速い放電、マージ、ヒープ

O(N):リニア:基数ソート

安定性:

式:ヒルという男はすぐに人々のグループを殺し、直接選出されたブルドーザー、地面を積み、最初の殺人事件以来、とても気分が非常に不安定です。

ヒル、迅速な、選択、スタック、不安定

シナリオ:

  • nが(例えばn≤50)が小さい、または直接挿入することができる場合は直接ソートを選択します。
    • 基本的なシーケンス順序の初期状態であれば、そして最高のランダムクイックソートの良いに直接バブリング。挿入ソートは、ソートの半分だけを選択するために必要な比較の数の平均半順序の配列に非常に有効です。
    • nが大きい場合、それは時間の複雑さのために使用すべきであるO(nlgn)ソート方法:クイックソート、ヒープソートやソートマージマージソート、何百万、あるいはより大きなアレイを扱うことができますが、挿入と選択ができません。主な欠点は、二次的に使用されるアレイの大きさに比例した余分なスペースマージソート、およびnです。
      • クイックソートは、内部順序の比較に基づいて、最短の平均時間クイックソート、ソートするキーワードがランダムに分散している場合、最善の方法と考えられています。
      • ヒープソート必要な補助スペースは、クイックソートよりも小さく、クイックソートが可能最悪のケースではありません。しかし、両方のは、不安定性の一種です。
      • 安定ソートを必要とするには、並べ替えをマージ選択することができます。二十二マージソートアルゴリズムが奨励されるべきではなく、それは組み合わせて、通常の直接挿入ソートすることができます。直接挿入ソート順の最初の使用は、より長いサブフォルダを取得し、その後、二十から二をマージします。直接挿入ソートは安定しているので、改善されたマージソートはまだ安定しているので。
    • クイックソートは、(わずかな補助スタック)インサイチュ配列であるという利点を有するが、選択されたベンチマークは、挿入ソートよりもクイック遅い小さなアレイの問題です。
    • ヒープソート利点は、追加のスペースなしに、ヒープとして配列自体をソートすることができソート、選択ソートが幾分類似しているが、比較的はるかに少ない必要な、そのような組込みシステムのためのヒープ・ソートまたは低コストのモバイルとしてということですシーンデバイスで制限された容量。

おすすめ

転載: www.cnblogs.com/yaogungeduo/p/11245233.html