public int[]selectSort(int[] arr){for(int i =0; i < arr.length -1; i++){int max =0;for(int j =0; j < arr.length - i; j++){if(arr[max]< arr[j]){
max = j;}}swap(arr, max, arr.length - i -1);}return arr;}
3. 希尔排序
public int[]hillSort(int[] arr,int gap){while(gap >=1){for(int i = gap; i < arr.length; i++){int key = arr[i];int j =0;for(j = i - gap; j >=0; j = j - gap){if(key < arr[j]){
arr[j + gap]= arr[j];}else{break;}}
arr[j + gap]= key;}
gap /=2;}return arr;}
public int[]heapSort(int[] arr){// 寻找最后一个结点的父节点.int index =(arr.length -1-1)/2;for(int i = index; i >=0; i--){downAdjust(arr, i);}return arr;}
// 向下调整
public voiddownAdjust(int[] arr,int index){int left = index *2+1;if(left >= arr.length){// 无孩子return;}// 有左孩子int small = left;// 有右孩子if(left +1< arr.length){int right = left +1;if(arr[small]> arr[right]){
small = right;}}if(arr[small]> arr[index]){// 不调整return;}else{// 调整// 交换swap(arr, small, index);downAdjust(arr, small);}}