publicstaticvoidselectSort(int[] arr){//考虑边界值if(arr ==null|| arr.length <2){return;}intN= arr.length;for(int i =0; i <N; i++){int minIndex = i;for(int j = i +1; j <N; j++){
minIndex = arr[j]< arr[minIndex]? j : minIndex;}swap(arr, i, minIndex);}}publicstaticvoidswap(int[] arr,int i,int j){int temp = arr[j];
arr[j]= arr[i];
arr[i]= temp;}publicstaticvoidmain(String[] args){int[] a ={1,5,3,6,8,7,2,3};printArr(a);selectSort(a);// bubbleSort(a);// insertSort(a);// insertSortPlus(a);printArr(a);}publicstaticvoidprintArr(int[] arr){for(int i =0; i < arr.length; i++){System.out.print(arr[i]+" ");}System.out.println();}
冒泡排序
假设数组 int arr [] = {1, 5, 3, 6, 8, 7, 2, 3};
下标 0 1 1 2 2 3 3 4 4 5 … end-1 end
如上进行两两比较,右边的比左边小则交换
publicstaticvoidbubbleSort(int[] array){if(array ==null|| array.length <2){return;}intN= array.length;for(int end =N-1; end >=0; end--){// 0~end 的事for(int second =1; second <=end ; second++){if(array[second-1]> array[second]){swap(array,second-1,second);}}}}
插入排序
插入排序就是相当于你打扑克,假设你手里的牌是排序好的,新发的牌你要按顺序往里插入位置
publicstaticvoidinsertSort(int[] arr){if(arr ==null|| arr.length <2){return;}// 0 0// 0 1// 0 2// 0 NintN= arr.length;for(int end =1; end <N; end++){int currentNum = end;while(currentNum>=0&& arr[currentNum-1]> arr[currentNum]){// 交换swap(arr,currentNum-1,currentNum);
currentNum--;}}}publicstaticvoidinsertSortPlus(int[] arr){if(arr ==null|| arr.length <2){return;}intN= arr.length;for(int end =1; end <N; end++){for(int pre = end -1;pre >=0&& arr[pre]>arr[pre+1];pre--){swap(arr,pre,pre+1);}}}