核心:
相邻的两个单元进行数据比较
之后按照 排序 要求 交换 单元 存储数据
多次执行排序,最终完成效果
优化:
循环比较 最后一个单元,没有下一个单元进行比较,只需要循环至 倒数第二个单元
一次循环排序出一个最大值, n 个单元 需要循环 n-1 次 完成整个数组的排序 最后一个单元没有排序比较的对象了
之前循环比较出的最大值,不再参与之后的循环比较
第一次 少比较 0 个单元
第二次 少比较 1 个单元
第三次 少比较 2 个单元
....
第n次 少比较 n-1 个单元
代码:
var arr = [12,13,99,65,894,313,98523,213];
// 使用 外层 循环变量 j 生成 从 0 开始的数值 也就是 每次比较,少比较的单元个数
// 循环执行 length-1 次
for(var j = 0 ; j < arr.length-1 ; j++){
var bool = true;
// 循环执行 length-1-j 次
for(var i = 0 ; i < arr.length-1-j ; i++){ // 当前单元是 arr[i] 下一个单元是 arr[i+1];
if(arr[i] > arr[i+1]){
bool = false;
// 数据交换操作
// 将数值大的放到数组最后
var tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
}
if( bool === true ){
break;
}
}
console.log(arr);
Comments | NOTHING