この記事では、Javaのさまざまなソートアルゴリズムをまとめます。次のように、参照のために共有してください。
1。バブルソート:
public class sorttest {public static void main(string [] args){int [] a = {345,7,32,5,4、-1,3,12,23,110,45645,321,456,78、-1,78,78 、78,32,444,345}(a); {for(int j = 0; j <a.length-i-1; j ++){a [j]> a [j+1]){int tmp = a [j] = a [j+1]; [J+1] = tmp;
2。クイックソート(重複値なし):
public class sorttest {public static void main(string [] args){] a = {345,32,4,3,12,23,110}; .length-1); = start; ){i ++} swap(a、index); int n、indecl){n] .println(arrays.toString(a));
3。クイックソート(繰り返しの値を含めることができます)
public class sorttest {public static void main(string [] args){int [] a = {345,7,32,5,4、-1,3,12,23,110,45645,321,456,78、-1,78,78 、78,32,345}; > end)int j = ind end; = index && a [j] == a [index] = swap(a、j、index); a [i]){i ++} if(i!= s == a [index] = swap(a、++ i、index); i、index)} QuickSort2(a、index-1); a [n] = a [index] = tmp; ;
4。ヒープソート
public class sorttest {public static void main(string [] args){int [] a = {345,7,32,5,4、-1,3,12,23,110,45645,321,456,78、-1,78,78 、78,32,44,345}; /2-1; i> = 0; i - ){createbiegeap(a、i、size-1); [0] = a [size-1-j] = tmp(a、0、size-2-j); [] a、int start、int end){int tmp = a int j = 2*start+1; +1] {j ++} if(j]> a [j]; ] = tmp;} private void show(int [] a)
5.ソートを挿入します
public class sorttest {public static main [] int [] a = {345,32,5、-1,3}; ;} private void insertSort(int [] a){int i <a.length-1; i ++){int n = i+1; j = i; j> = 0; j-){tmp <a [j]){n] = j; a [n] = tmp;
6。折りたたみ挿入並べ替え
public class sorttest {public static void main(string [] args){int [] a = {345,7,345,2,2,7,2,7,23,2,345,7,32,5,4、 - 1,3,7,3,3,4,1,2,4,3,3,3,2} static void insertsort2(int [] a){for(int i = 0; i <a.length-1; i ++){int n = i+1; ] int low = I ){high = mid -1; - ){j] = a [j-1]; [low] = tmp; ;
7。ヒルソート
public class sorttest {public static void main(string [] args){int [] a = {345,7,32,5,4、-1,3,3,5,7,8,90,1} ;ショー(a); ){int i、j、k、temp、gap; 58548857、157840433,410151271,1131376761,2147483647} i <n; -gap; [j] = temp;
8。ソートを選択します
public class sorttest {string [] args){] a = {345,32,5,4、-1}; } private static void selectsort(int [] a){for(int i = 0; i <a.length-1; i ++){int j = i+1; j <a.length; j ++){a [j] <min = j; = tmp;}} private static void show(int [] a)
9。注文
public class sorttest {public static void main(string [] args){int [] a = {345,7,32,5,4、-1,3,3,5,7,8,90,1,432、 1} show(a);スペースストレージミドルインデックスは、左の値int []左= setValue(a、0、mid)を使用します。 ; //正しい値でミドルインデックスを保存するためのスペースを適用します= setValue(a、mid、a.length);要素値は1 mergesort(右); {int i = 0、j = 0、k = 0; [i ++]; ; j ++){a [k ++] = right [j]; int i = 0; a));
まとめ:
パブリッククラスsortutil {public final static int desc = -1; (int [] a、int sort){if(sort == asc)bubblesortasc(a); .length-1; i ++){for(int j = 0; j <a.length-i-1; j ++){if(a [j]> a [j+1]){int tmp = a [j] ; a [j+1]; 1; i ++){for(int j = 0; j <a.length-i-1; j ++){a [j] <a [j+1]){int tmp = a [j]; j] = a [j+1] = tmp; -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - - - 能力 - セグメントライン-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- PARAM SORT SORTUTIL.ASC、SORTUTIL.DESC */ public void QuickNorePeatsort(int [] a、int sort){if(sort == asc)QuickNorePeatsorcasc(a、0、a.length-1); 0、a.length-1); start; {i ++} swap(a、index); int start、int> = return) {j-} swap(a、index); 、index -1); c static void QuickSort(int [] a、int sort){if(sort == asc)QuickSortasc(A、A.Length-1); static quicksortasc(int start、int end) [j]> a [index]){j--; index = swap(a、j、index); (++ I、index = swap(a、index)} static voi d quicksortdesc(int start、int end) a [j] <a [index]){j- - ; {index = swap(a、j、index);スワップ(++ i、index = swap(a、index)} Private I nt Swap(int n、int index){n] = a [index] = tmp; ------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- ---------- @param sort array * @param sort sortutil.asc、sortutil.desc */ public static void heapsort(int [] a、int sort){if(sort == asc)heapsortasc (a); heapsortdesc(a); i--){createbigheap(a、i、size -1); [サイズ-1 -j]; {int tmp = a [start]; a [j] = a [j] = j + 1; int [] a){//最小ヒープint size = a.length; } //(int j = 0; j <1; j ++){int tmp = a [0]; = tmp; 1; while(j <= end){j <end && a [j+1]){j ++; ] start = j = j + 1; -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- ------- ------------------------ /** * sort * * @param a sort array * @param sort sortutil。 asc、sortutil.desc */ public static void insertsort(int [] a、int sort){sort == asc){insertsorcasc(a); [] {for(int i = 0; i <a.length -1; i ++){int n = i+1; j-){tmp <a [j]){n] = j; public static void insertsortdesc(int [] a){for(int i = 0; i <1; i ++){int n = i+1; ; j> = 0; ] = tmp; // ------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- --------------- *ハーフ挿入sort * * @param a sort array * @param sorttutil.asc、sortutil.desc */ public static void halfinsertsort(int [] a、 int sort){sort == asc){halfinsertsortasc(a); -1; / 2; = Mid + 1; tmp; tmp <a [i] tmp> a [Mid]){Mid -1; j> j-){j] = a [low]}}}} -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- ---------------- ----------------- ** * Hill Sort * * @param a Sort Array * @param sort sortutil.asc、sortutil.desc */ public static void shellsort(int [] a、int sort){if(sort == asc){shellsortasc(a、a.length); ;) 、4711、11969、27901、84801、213331、543749、1355339、3501671、8810089、2152174、58548857、157840433、410151271、113137761、214836; n; -k> = 0){ga p = gaps(i <n; i ++){j> = a [j] -gap]> temp){j] = j -g -g -gap; int i、j、k、temp、gap; 、21521774、58548857、157840433、410151271、1147483647} = GAP; j = j-gap; -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------- / ** * sort * * @param a sort array * @param sort sortutil.asc、sortutil.desc * / public static void selectsort(int [] a、int sort){sort == asc){selectsortasc(a); = 0; <a.length -1; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::づ 火::::: ::::::::::::::::::::::::::::::::::::::::::::; = i+1; ] = a [min] = tmp; ; for (int j = i + 1; j < a.length; j++) { if (a[j] > a[max]) max = j; } if (max != i) { int tmp = a[i ]; a [max] = tmp; -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- ------------------------------------------- Function-Segmentation-Line------------ -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- ------------------------------------------ sortutil.desc */ public static void mergesort(int [] a、int sort){//中間値を見つけるint = a.length / 2; 、Mid) int [] right = setValue(a、a.length); = = asc){a、左、右);私 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::づ 火::::: :::::::::::::::::::::::::::: = 0、j = 0、k = 0; right.length;){if(left [i] <right [j]){a [k ++]; .length; j <right.length; j ++] {a [k ++] =左[j]} 、int [] left、int [] right){int i = 0、j = 0、k = 0; [j]){a [k ++] = [i ++]; ]; = new int [start];
この記事がみんなのJavaプログラミングに役立つことを願っています。