写个冒泡排序
写就写嘛,走你!
function bubbleSort(arr) {
let count = 0; //统计循环次数
for(let i = arr.length; i > 0; i--) { // 从最后一个选起
for (let j = 0; j < i; j++) { // 限定对比的范围
// 前一个和后一个对比,如果前一个大于后一个,就调换位置
if (arr[j] < arr[j + 1]) {
const temp = arr[j]; // 缓存前一个
// 删除最后一个,插入一样的前一个,这个时候2个都是前一个一样的值
arr.splice(j, 1, arr[j + 1]);
arr.splice(j + 1, 1, temp); // 删除后一个,把缓存的前一个插入
/* 这样也是可以的嘛,目的都是调换位置
arr[j] = arr[j + 1];
arr[j+1] = temp;
*/
}
count++;
}
}
console.log(`循环次数为:${count}次`);
return arr;
}
能优化一下吗
??? 什么鬼, 这个还可以优化?
经过3天3夜的思考,掉了300根头发,发现好像每一次遍历都不用跟前面一个再比了
function bubbleSort(arr) {
let count = 0; //统计循环次数
for(let i = arr.length; i > 0; i--) { // 从最后一个选起
for (let j = 0; j < i - 1; j++) { // ** 就在这,减1就好了,可以节省循环
// 前一个和后一个对比,如果前一个大于后一个,就调换位置
if (arr[j] < arr[j + 1]) {
const temp = arr[j]; // 缓存前一个
// 删除最后一个,插入一样的前一个,这个时候2个都是前一个一样的值
arr.splice(j, 1, arr[j + 1]);
arr.splice(j + 1, 1, temp); // 删除后一个,把缓存的前一个插入
/* 这样也是可以的嘛,目的都是调换位置
arr[j] = arr[j + 1];
arr[j+1] = temp;
*/
}
count++;
}
}
console.log(`循环次数为:${count}次`);
return arr;
}
网友评论