选择排序可以将一个数组理解为未排序区域和已排序区域
从数组第一位开始往数组最后一位遍历,用min记录第一个数的下标,假设这个数是最小的,将其与后面的数进行比较,若出现比他还要小的,将这个更小的数的下标与min交换。一轮遍历完之后如果最小的数的下标min不等于第一个数,将第一个数和下标为min的数字进行位置互换。
/**
* 选择排序
* @Description:每次循环一轮,将未排序中的最小数选出来,放在已排序中的最后一位
* @param sum 需要排序的数组
*/
public void selectSort(int[] sum){
for(int i=0;i<sum.length;i++){
int min=i; // 记录未排序数组中第一个数的下标
for(int j=i+1;j<sum.length;j++){
if(sum[min]>sum[j]){
min=j;
}
}
if(i!=min){ // 未排序数组中的第一个数不是最小的数字
temp = sum[i];
sum[i] = sum[min];
sum[min] = temp;
}
}
}