冒泡排序
// 数组需要由小到大排列 ??
//通过sort排序 用的很多 也是最简单的
var arr = [5,4,6,2];
var newArr=arr.sort(function(a,b){
return a-b;
})
console.log(newArr);//(4)[2,4,5,6]
//通过冒泡排序怎么解决呢?思路是什么?
//比较数组的前一项和后一项的大小,如果前一项比后一项大,那么就互换位置,用循环。
var arr = [5,4,6,2];
//前一项5和后一项4比较 5>4 互换位置[4,5,6,2] (比较的是第一项和第二项)
//前一项5和后一项6比较 5<6 不互换位置[4,5,6,2] (比较的是第二项和第三项)
//前一项6和后一项2比较 6>2 互换位置[4,3,2,6] (比较的是第三项和第四项)
var arr = [5,4,6,2];
for (var i=0;i<arr.length-1;i++){
console.log("前一项", arr[i], "后一项", arr[i + 1]);
if(arr[i]>arr[i+1]){
var arrx=arr[i];//前一项和后一项对比 前面大的值会调到后面一项
arr[i]=arr[i+1];
arr[i+1]=arrx;
}
console.log(arr)
}
console.log("第一次",arr);//第一次 (4) [4, 5, 2, 6]
//第一次结果就是最大值会放到最后边了
var arr = [5,4,6,2];
//var arr = [4,5,2];//除掉最后一项最大的6 所以arr.length-1-1
for (var i=0;i<arr.length-1-1;i++){
console.log("前一项", arr[i], "后一项", arr[i + 1]);
if(arr[i]>arr[i+1]){
var arrx=arr[i];//前一项和后一项对比 前面大的值会调到后面一项
arr[i]=arr[i+1];
arr[i+1]=arrx;
}
console.log(arr)
}
console.log("第二次",arr);//第二次 (3) [4, 2, 5]
//第二次结果就是第二个最大值会放到最后边了
var arr = [5,4,6,2];
//var arr = [4,2];//除掉第二大的5 所以arr.length-1-1-1
for (var i=0;i<arr.length-1-1-1;i++){
console.log("前一项", arr[i], "后一项", arr[i + 1]);
if(arr[i]>arr[i+1]){
var arrx=arr[i];//前一项和后一项对比 前面大的值会调到后面一项
arr[i]=arr[i+1];
arr[i+1]=arrx;
}
console.log(arr)
}
console.log("第三次",arr);//第三次 (2) [2, 4]
做到这里是不是想到了什么???对 重复代码这么多??用一个循环搞定
var arr = [5,4,6,2];
for(j=0;j<arr.length-1;j++){
//j<arr.length-1为什么减1,因为比如数组长度为4,其实对比3次排序结果就出来了。
for (var i=0;i<arr.length-1-j;i++){
// console.log("前一项", arr[i], "后一项", arr[i + 1]);
if(arr[i]>arr[i+1]){
// 那么把大的放在后面,其实就是前一项和后一项互换位
var arrx=arr[i];
arr[i]=arr[i+1];
arr[i+1]=arrx;
}
// console.log(arr);
}
}
console.log(arr);//(4)[2,4,5,6]
总结核心: 比较前一项 和后一项 如果前一项 大于后一项 那么 就互换位置;