选择排序,按顺序抽取一个数,把这个数与它后面的数最对比找到最小的那个与它做交换
数组 int[] a = {11,222,44,63,84,24,53,123,25,98,76,34};
第一步,先取出11和后面的数做比较发现他是最小的,位置不变
第二部,取出222和它后面的数做比较发现24最小就交换他们的位置
数组变成了{11,24,44,63,84,222,53,123,25,98,76,34};
这样每次循环都能保证第n个数是第n到a.length的中最小的那个数。
附上代码
import java.util.Arrays;
public class SelectSort {
public static void main(String args[]){
int[] a = {11,222,44,63,84,24,53,123,25,98,76,34};
selectSort(a);
System.out.println(Arrays.toString(a));
}
public static void selectSort(int[] a){
int min = 0;
for(int i=0;i<a.length-1;i++){
int index = i;
for(int j=i+1;j<a.length;j++){
if(min > a[j]){
index = j;
}
}
min = a[index];
a[index] = a[i];
a[i] = min;
}
}
}