选择排序算法的思想
每次从待排序序列中找出最大值或最小值,查找过程重复 n-1 次。对于每次找到的最大值或最小值,通过交换元素位置的方式将它们放置到适当的位置,最终使整个序列变成有序序列。
举个栗子:
对{10,33,27,14,35}进行升序排列
1)待排序序列为{33,27,14,35},10为最小值,序列不变
2)待排序序列为{27,14,35},14为最小值,33与14交换,序列为{10,14,27,33,35}
3)待排序序列为{33,35},27为最小值,序列不变
4)待排序序列为{35},33为最小值,序列不变,此时以重复n-1次排序结束
选择排序的java实现
public double[] SelectSort(double vals[]){
for(int i = 0;i < vals.length-1;i ++){
//待排序区最小值的索引,初始为i
int min = i;
//用于遍历待排序区的元素
int j = i+1;
//与待排序区的所有元素进行比较,得出该位置的最小值
while(j < vals.length){
if(vals[j] < vals[min]){
//更新索引
min = j;
}
j ++;
}
//交换保证改位置的元素相对最小
double tmp = vals[i];
vals[i] = vals[min];
vals[min] = tmp;
}
return vals;
}