选择排序用的是假设性原则
假定一个数字是最小值
验证这个数字是不是最小值,如果不是,换位
假设第一个数字是最小的
var min = arr[0];
var index = 0
和数组之中的其余项进行比较,查看是不是最小值
for(var i = 1 ; i < arr.length ; i ++){
//如果有比假定数字还小的数字
if( arr[i] < min ){
//记录数字以及下标,暂时不换位
min = arr[i];
index = i;
}
}
换位操作:
假定最小值是0,实际上的最小值是index,换位
1.先覆盖原有的项
arr[index] = arr[0];
2.把最小值换到第0位上
arr[0] = min;
第二趟
var min = arr[1];
var index = 1;
和数组之中的其余项进行比较,查看是不是最小值
for(var i = 1 ; i < arr.length ; i ++){
//如果有比假定数字还小的数字
if( arr[i] < min ){
//记录数字以及下标,暂时不换位
min = arr[i];
index = i;
}
}
换位操作:
假定最小值是0,实际上的最小值是index,换位
1.先覆盖原有的项
arr[index] = arr[1];
2.把最小值换到第0位上
arr[1] = min;
结论:
var arr = [1,9,8,5,4,2,10]
for( var k = 0 ; k < arr.length ; k ++){
// 假定最小值下标
var min = arr[k];
var index = k;
// 求证最小值
for( var i = k + 1 ; i < arr.length ; i ++){
if(arr[i] < min){
min = arr[i];
index = i
}
}
//最小值和假定最小值换位
arr[index] = arr[k];
arr[k] = min;
}
console.log(arr);
运行结果:
[1, 2, 4, 5, 8, 9, 10]