js中,什么是冒泡排序

6 阅读2分钟

在 JavaScript 中,冒泡排序(Bubble Sort) 是一种简单但效率较低的排序算法。它的基本思想是重复地遍历要排序的列表,比较相邻的两个元素,如果它们的顺序错误(比如前一个比后一个大,在升序排序中),就交换它们的位置。这个过程会不断重复,直到整个列表有序为止。

之所以叫“冒泡”,是因为较小的元素会像气泡一样逐渐“浮”到列表的顶部(或较大的元素“沉”到底部,取决于实现方式)。


🌟 冒泡排序的基本步骤(以升序为例):

  1. 从第一个元素开始,依次比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素,就交换它们。
  3. 继续这个过程,直到列表末尾。此时,最大的元素已经“冒泡”到了最后。
  4. 对剩下的未排序部分重复上述过程。
  5. 当某一轮遍历中没有发生任何交换,说明列表已经有序,可以提前结束。

✅ JavaScript 实现示例:

const arr = [64, 34, 25, 12, 22, 11, 90]

function bubbleSort(arr) {
    let n = arr.length;
    for (let i = 0; i < n - 1; i++) {
        let swapped = false; // 优化:记录本轮是否发生交换
        for (let j = 0; j < n - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
                swapped = true;
            }
        }
        // 如果这一轮没有交换,说明已经有序
        if (!swapped) {
            break;
        }
    }
    return arr;
}
console.log(arr)
console.log('冒泡排序 ->', bubbleSort(arr))

⏱️ 时间复杂度:

  • 最坏情况(逆序):O(n²)
  • 最好情况(已排序):O(n)(加上优化后)
  • 平均情况:O(n²)

💾 空间复杂度:

  • O(1)(原地排序)

📝 小结:

冒泡排序虽然效率不高,不适合处理大规模数据,但由于其逻辑简单、易于理解,常被用于教学和算法入门。在实际开发中,通常会使用更高效的排序方法(如 Array.prototype.sort(),它在 V8 引擎中使用的是 Timsort 或快排变种)。