拿一个元素(当前元素)和剩下的(除去排好序的)比较,获得最小值索引 然后和当前元素交换
注意:
开始取a[i] 为a[min] ,a[min] 和a[i→n]第一个比较 ,不过不是和全部的比较
因为a[i→n]比a[0]小的有很多,
应该是取到一个比a[min]小的值 要把当前索引赋值给min 然后继续遍历
遍历完内层循环后就会得到最小值的索引,然后和a[i]交换
@Test
public void test(){
int[] a = {4, 2, 5, 3, 1, 0};
selection(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + ",");
}
}
public void selection(int[] a){
for (int i = 0; i < a.length; i++) {
int min = i;
for(int j = i + 1; j < a.length; j++){
if(less(a[j], a[min])){
min = j;
}
}
exch(a, i, min);
}
}