この記事の例は、いくつかのJavaソートアルゴリズムの実装と簡単な分析を示しています。あなたの参照のために全員のためにそれを共有してください。詳細は次のとおりです。
パッケージテスト; //アレイのリクエストが2番目の数字から開始されるかどうかを決定します[j] <j -1] {int temp = list [j -1];基本、バイナリ検索の追加*/place void bininsertsort(int [] r、int low、int high){for(int i = low+1; i <= high; i ++){int temp = r [i]; // hi = i -1を保存します。 。 j> hi-)r [j + 1] = r [j]; int [] r、int low、int high、int [] delta){for k]);} private void shellinsert(int [] r、int low、int deldak){for(int i = low+deltak; i <= high; i ++)if(r [i] <r [i- deltak]){int temp = r [i]; ]; r [j +deltak] = test;}/*[交換]を選択*/public void selectsort(int [] r、int low、int high){for(int k = low; k <high -1; k + +){// n -1 trips to int min = K; for(int i = min+1; i <= high; i ++) <r [min])min = i; min]; r [min] = test;} // if}}/*seort-large top pile*/public void heapsort(int [] r){int n = r.length-1; i = n/2; = 1; 1 ]; r [i] = test; j <= high j = j * 2){j <high && r [j+1])j ++; r [j];} r [low] = test; 0、99、55、7、5、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、 4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、 4、4、4、4、4、4、4、5、4、4、5、4、3、2、1}; fs.insertsort(a); 、0、length-1);
挿入、交換の並べ替え、選択、合併並べ替え、その他のソートメソッドには、共通の特徴があります。つまり、比較要素を介して要素間の相対的な位置を決定します。以下に、比較ソートメソッドに基づいて比較および要約します。
主に、アルゴリズムの平均時間の複雑さ、最悪の時間の複雑さ、空間の複雑さ、ソートの安定性からのソート方法を比較します。
ソートメソッド平均時間の複雑さ最悪の時間の複雑さの複雑さは、直接挿入された安定性の空間と安定性の複雑さ(n2)(n2)ο(1)安定したフォームソーティング(n2)ο(n2)ο(1)安定した高速ソートング」 n)ο(n log)1)不安定な合併ソートο(n log n)ο(n log n)ο(n)stable
時間のパフォーマンスに関しては、高速ソートは、すべてのソートアルゴリズムで最高の実際のパフォーマンスです。これは、迅速なソートを変更することで回避できます。スタックの並べ替えと合併並べ替えの比較では、nが大きい場合、合併と並べ替えに必要な時間は短くなりますが、より多くの補助ストレージスペースが必要です。
メソッドの安定性の観点からは、ほとんどの場合、道路は安定したソート方法です。高速ソート、スタッキングソート、ヒルのソートなど、優れたパフォーマンスを備えたソートメソッドのほとんどは不安定です。一般的に言えば、ソートプロセス間の比較の並べ替え方法は安定しています。
さらに、ソートメソッドの安定性は、その説明フォームに関係なく、メソッド自体によって決定されます。
要約すると、上記の選別方法のいずれも絶対に最適ではありません。
この記事がすべての人のJavaプログラムのデザインに役立つことが期待されています。