packagesort;importjava.util.Arrays;public classSortUtils {public static voidmain(String[] args) {int[] arr = { 54, 26, 93, 17, 77, 31, 44, 55, 20};//bubbleSort(arr);//travel(arr);//selectSort(arr);//travel(arr);//quickSort(arr, 0, arr.length-1);//travel(arr);//insertSort(arr);//travel(arr);//shellSort(arr);//travel(arr);
travel(mergeSort(arr));
}public static void travel(int[] arr) {for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+ " ");
}
System.out.println();
}//归并排序
public static int[] mergeSort(int[] arr) {while (arr.length <= 1) {returnarr;
}//二分分解
int mid = arr.length / 2;int[] left = mergeSort(Arrays.copyOfRange(arr, 0, mid));int[] right =mergeSort(Arrays.copyOfRange(arr, mid, arr.length));//合并
int[] result = new int[arr.length];int i = 0, l = 0, r = 0;while (l < left.length && r
result[i++] = left[l++];
}else{
result[i++] = right[r++];
}
}while (l
result[i++] = left[l++];
}while (r
result[i++] = right[r++];
}returnresult;
}//希尔排序
public static void shellSort(int[] arr) {for (int gap = arr.length / 2; gap > 0; gap /= 2) {for (int i = gap; i < arr.length; i++) {for (int j = i; j >= gap; j -=gap) {if (arr[j] < arr[j -gap]) {int temp =arr[j];
arr[j]= arr[j -gap];
arr[j- gap] =temp;
}
}
}
}
}//快速排序
public static void quickSort(int[] arr, int first, intlast) {if (first >=last) {return;
}int midValue =arr[first];int low =first;int high =last;while (low =midValue) {
high--;
}
arr[low]=arr[high];while (low < high && arr[low]
low++;
}
arr[high]=arr[low];
}
arr[low]=midValue;
quickSort(arr, first, low- 1);
quickSort(arr, low+ 1, last);
}//插入排序
public static void insertSort(int[] arr) {for (int i = 1; i < arr.length; i++) {for (int j = i; j > 0; j--) {if (arr[j - 1] >arr[j]) {int temp = arr[j - 1];
arr[j- 1] =arr[j];
arr[j]=temp;
}else{break;
}
}
}
}//选择排序
public static void selectSort(int[] arr) {for (int i = 0; i < arr.length; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] >arr[j]) {int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}//冒泡排序
public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {boolean flag = true;for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp =arr[j];
arr[j]= arr[j + 1];
arr[j+ 1] =temp;
flag= false;
}
}if(flag) {break;
}
}
}
}