let arr = [4, 2, 1, 5, 3];
function compare(a, b) {
return a > b ? true : false;
}
function exchange(arr, a, b) {
let temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
//最基本的
function sortBublingBasic(arr) {
for (let j = 0; j < arr.length - 1; j++) {
for (let i = 0; i < arr.length - 1 - j; i++) {
if (compare(arr[i], arr[i + 1])) {
exchange(arr, i, i + 1);
}
}
}
}
//进行优化的,较少对比的次数
function sortBubling(arr) {
let changeNum = 0; //交換的次數
let compareNum = 0; //比較次數
let lastChangeIndex = 0; //最後一次交換的下表
let sortBorder = arr.length - 1; //无序排列的邊界,邊界之後的即為有序排列,無需再比較
for (let j = 0; j < arr.length - 1; j++) {
let sorted = true;
for (let i = 0; i < sortBorder; i++) {
let flag = compare(arr[i], arr[i + 1]);
compareNum++;
if (flag) {
exchange(arr, i, i + 1);
changeNum++;
sorted = false;
lastChangeIndex = i;
}
}
sortBorder = lastChangeIndex;
if (sorted) {
break;
}
}
console.log("changeNum:", changeNum, "compareNum:" + compareNum);
}
sortBubling(arr);
console.log(arr);
JS冒泡排序
于 2024-04-12 11:47:29 首次发布
文章介绍了两种冒泡排序函数,基本版本和进行了优化的版本,后者通过记录最后一次交换的位置,减少了不必要的比较次数,提高了排序效率。
838

被折叠的 条评论
为什么被折叠?



