选择排序思想
数组长度 n = nums.length
第一次从0开始找到数组最小值与nums[0]交换
第二次从1开始找到最小值与nums[1]交换
.
.
.
第n-2次 把最小值与nums[n-2]交换
package com.Gordon;
public class SelectionSort {
public static void main(String args[]){
int[] arr = {0,5,2,3,4,12,52,14,1,99};
//Print.arr(arr);
int minPOS=0;
for(int i =0 ;i<arr.length-1;i++){
for (int j = i+1; j < arr.length ; j++) {
if (arr[j] < arr[minPOS]) {
minPOS = j;
//可写成 minPOS = arr[j] < arr[minPOS]?j:minPOS }
}
Swap.arr(arr,i,minPOS);
//System.out.print(minPOS+"x");
minPOS=i+1;
}
System.out.println("after sort");
Print.arr(arr);
}
}
Print.arr 和 Swap.arr是自己提前写好的打印数组和交换数组两个值
注意点:
外层循环可以少一次 因为最后一个数已经与倒数第二个数比较过;
思考优化:我们每一次循环可以找到最小值 是不是可以顺便把最大值找到?然后放在最后?
这样的话循环次数就是n/2