この記事では、一般的に使用される8つのソートアルゴリズムを実装しています。ソートの挿入、バブルスティング、ソートの選択、丘の並べ替え、速いソート、合併の並べ替え、スタッキング、LSTベースソート
1つ目は8Algorithms.javaファイルです。
Java.util.arraysをインポートします。挿入並べ替え:時間複合体O(n^2)public static void insertsort(int a []、int n){for(int i = 1; i <n; ++ i){{int temp = a [i]; int j = i -1; ;}} //バブルソート:時間の複雑さo(n^2)public static void bubblesort(int a []、int n){for(int i = n -1; i> 0; 0; 0; 0; 0; 0; 0 ; temp = a [j] = a [j + 1] = test;}}}} // int a []、int n){for(int i = 0; i <n -1; ++ i){min = a [i]; j <n; ++ j){if(a [a [a [a [a [a j] <min){min = a [a [a] j];}} a [i] = min;} // hillの複雑さはo(n^2)およびo(nlgn)です。 public static void shellsort(int a []、int n){for(int gap = n / 2; gap> = 1; gap / = 2){for(int i = gap; i <n; ++ i){ int temp = a [i]; j + gap] = test;}} //クイックソート:時間の複雑さo(nlgn)public static void quicksort(int a []、int n){_ quicksort(_ quicksort(a、0、n-1);} public static void left、q -1); _quicksort(a、q + 1、右);左<右&& a [右]> = pivot){ - right;} a [left] = a [right];右] = a [左];} a [左] = pivot; 、n -1); public static void _mergesort(int左、right){int <right = left +(右 - 左) / 2; MID); _MERGESORT(A、MID + 1、右); -LEFT +1; j];} int j = left +1; for; ] <newa [j]){a [k] = newa [i ++];} else {a [k] = newa [j ++];} while(i <= mid -left){a [k + +] = newa [i ++];} while(j <= right -left){a [k ++] = newa [j ++];} //ヒープソート:時間の複雑さo(nlgn)public void heaport (int a []、int n){burtionmaxheap(a、n); i){int temp = a [0] = a [i]; []、int n){upadjust(a、n);} //長さnの配列は、public static void upadjust(int a []、int n)に調整されます{//子ノードの移動を持つ各要素はisですトラバース。 n){//右の子値の値はノードの値より大きく、(a [2 * i]> a [i -1]){int temp = a [2 * i]; a [2 * i] = a [i -1] = test;} //左の子の値はノードの値より大きく、if(a [2 * i -1]> a [i -1]){int temp = a [2 * i -1] = a [i -1] = temp; } //調整node(a、n、2 * i) {//ノードの値、それらを交換する(a [2 * i -1]> a [i -1]){int temp = a [2 * i -1]; = a -1]; a [i -1] = temp;}} //ベースソートの時間の複雑さはo(距離(n+radix))、距離は数字、nは数字です配列の場合、RADIXはベースです//この方法はベースソートにLSTメソッドを使用するためです並べ替える配列の数字のnは、int a []、int n、int distance){int [] new int [n]; [] count = new int [radix]の配列を一時的に堆積させるには、0から0の要素の数がint divide = 1から表示されます最初の場所(int i = 0; i <<< istance; ++ i){system.arraycopy(a、0、newa、0、n); newa array arrays.fill(count、0); ; //配列要素の現在の処理ビットの値を取得[radixkey] ++;}配列内の各radixKeyの終了位置、および位置番号範囲は(int j = 1; j <radix; ++ j){count [j] = count [j] + count [j -1 ];} //ソートをカウントする原理を使用します。 j]; count [radixkey];} divide * radix;}}}次に、コードtesteightalgorithms.javaをテストします。コードは次のとおりです。
public class testeightalgorithms {public static void printarray(int a []、int n){for(int i = 0; i <n; ++ i){system.print(a [i] +""); == n -1){system.out.println();}} public static void main(string [] args){for(int i = 1; i <= 8; ++ i){int arrr [] = {45、38、26、77、128、38、25、444、61、153、9999、1012、43、128}; 2:evergorthers.selectsort(arr. length); :evergoriths. case 6:case 7: 8Algorithms.lstradixSort(arr.length、10、4);最後の実行結果は次のとおりです。
上記は、Javaが一般的に使用される8つのソートアルゴリズムを実装するためのすべてのコードです。