几种排序方法的实现
public class Sort{/** * 直接插入排序 * @param arr * @return */public static int[] insertSortImpl(int[] arr) {if(arr != null && arr.length > 0) {int length = arr.length;for(int i = 1; i < length; i++) {int currentData = arr[i];int tmp = i;while(tmp > 0 && arr[tmp - 1] > currentData) {arr[tmp] = arr[tmp -1];tmp--;}arr[tmp] = currentData;}}return arr;}/** * 折半插入排序 * @param arr * @return */public static int[] halfInsertSort(int[] arr) {if(arr != null && arr.length >0) {for(int k = 0 ; k < arr.length; k++) {int length = arr.length;int insertDate = arr[length - 1];//将最后一个元素当中待插入元素int low = 0;int high = length - 2;while(low <= high) {int middle = (low + high) / 2;//获得数组中间元素的下标if(insertDate < arr[middle]) {high = middle - 1;} else {low = middle + 1;}}for(int j = length - 1; j > high + 1; j--) {arr[j] = arr[j-1];}arr[high + 1] = insertDate;}}return arr;}/** * 希尔排序 */public static int[] shellSort(int[] arr) {int temp;int length = arr.length;for(int k = length/2; k>0; k--) {for(int i = k; i<length; i++) {if(arr[i-k] > arr[i]) {temp = arr[i-k];arr[i-k] = arr[i];arr[i] = temp;}}}return arr;}/** * 冒泡排序 */public static int[] maoPao(int[] arr) {int length = arr.length;int temp;for(int i=length -1; i>0;i--) {for(int j=0;j<i;j++) {if(arr[j] > arr[j+1]) {temp = arr[j];arr[j] = arr[j+1];arr[j+1] =temp;}}}return arr;}}