核心:
从 起始单元 循环至 最后一个单元
默认 起始单元的数据 是 最小值 存储 起始单元的索引下标
从 起始单元 的下一个 单元 开始 比较 数据大小
如果 之后 单元的数据大小 更小 存储 之后数据单元的索引下标
每次都是 使用 存储的索引下标 对应 单元的 对象数据, 与 之后的单元比较
先存起始 索引 比较数据 存储 较小值的 索引
每一次循环,会将最小值排序在数组的起始位置
优化:
每次都是从当前循环的起始位置的下一个位置开始内层的循环
一次循环排序出一个最小值, n 个单元 需要循环 n-1 次 完成整个数组的排序 最后一个单元没有排序比较的对象了
之前循环比较出的最小值,不再参与之后的循环比较
var arr = [9,5,6,8,2,7,3,4,1];
// 外层循环遍历
for(var j = 0 ; j < arr.length-1 ; j++){
var index = j;
for(var i = index ; i < arr.length ; i++){ // 循环找到当前循环最小值的下标 if(arr[index] > arr[i]){
index = i;
}
// 如果得到的下标值与当前值不相同 进行内容置换
// 将当前循环最小值放在当前位置
if( j !== index){
var tmp = arr[j];
arr[j] = arr[index];
arr[index] = tmp;
}
}
console.log(arr);
Comments | NOTHING