function bubbleSore(arr) { var len = arr.length for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp } } } return arr } var arr = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0,] document.write(bubbleSore(arr)) 所以优化的代码
时间: 2024-02-10 19:20:27 浏览: 106
这是一个冒泡排序的 JavaScript 代码。优化冒泡排序算法的方法有很多,以下是一些常见的优化方式:
1. 添加标志位:当在一轮排序中没有发生任何交换操作时,说明已经排好序了,可以直接跳出循环,避免不必要的比较操作。
2. 记录最后一次交换的位置:在下一轮排序中,只需要比较到上一轮最后一次交换的位置,因为该位置之后的元素已经排好序了。这样可以减少比较次数。
3. 双向冒泡排序:不仅从前往后比较,也从后往前比较。这样可以减少排序的轮数。
以下是优化后的代码示例:
function bubbleSort(arr) {
var len = arr.length;
var flag = false; // 添加标志位
var k = len; // 记录最后一次交换的位置
for (var i = 0; i < len - 1; i++) {
flag = false;
var lastSwap = 0; // 记录每轮最后一次交换的位置
for (var j = 0; j < k - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
lastSwap = j; // 记录最后一次交换的位置
}
}
k = lastSwap + 1; // 优化:下一轮只需要比较到最后一次交换的位置
if (!flag) {
break; // 优化:如果没有交换操作,则已经排好序,直接跳出循环
}
}
return arr;
}
var arr = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0];
document.write(bubbleSort(arr));
阅读全文