冒泡排序是最早接触的排序方法了,思路也很简单,两层循环,相邻数比较,小的上升大的下沉。
至于选择排序,思路上与插入排序有些类似,不过比较的范围变成了从当前数i到n-1,找出其中最小的数,记下下标,在外层循环中完成一次交换。不过在交换之前需要加一个大小比较的判定,这样在某种程度上就节省了成本。
BubbleSort:
1 final int[] arr={57,68,59,52}; 2 for(int i=0;i<arr.length;i++){ 3 /*此处需要-1的原因是,内层比较是当前数与后一个数的比较,如果内层循环可以到最后一个数,那么就会出现数组越界Exception*/ 4 for(int j=i;j<arr.length-i-1;j++){ 5 if(arr[j]>arr[j+1]){ 6 int temp; 7 temp=arr[j+1]; 8 arr[j+1]=arr[j]; 9 arr[j]=temp; 10 } 11 } 12 }
SelectionSort:
1 int[] arr={57,68,59,52}; 2 3 for(int i=0;i<arr.length;i++){ 4 int minIndex=i; 5 for(int j=i+1;j<arr.length;j++){ 6 if(arr[j]<arr[minIndex]) 7 minIndex=j; 8 } 9 /*交换之前需要添加一个比较的验证过程*/ 10 if(arr[i]>arr[minIndex]){ 11 int temp; 12 temp=arr[minIndex]; 13 arr[minIndex]=arr[i]; 14 arr[i]=temp; 15 } 16 17 }