joken-前端工程师

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

冒泡排序是一种简单的排序算法。它重复地遍历待排序的列表,比较相邻的元素并交换位置,如果它们的顺序错误。这个过程会重复进行,直到整个列表排序完成。下面是用 JavaScript 实现的冒泡排序算法:

function bubbleSort(arr) {
    let n = arr.length;
    let swapped;

    do {
        swapped = false;
        for (let i = 0; i < n - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                // 交换 arr[i] 和 arr[i + 1]
                let temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
                swapped = true;
            }
        }
        // 每次遍历后,最大的元素会移动到数组末尾
        n--;
    } while (swapped);

    return arr;
}

// 示例使用
const array = [64, 34, 25, 12, 22, 11, 90];
console.log("未排序数组: " + array);
const sortedArray = bubbleSort(array);
console.log("排序后数组: " + sortedArray);

解释:

  1. 函数定义bubbleSort(arr) 接受一个数组作为参数。
  2. 变量初始化
    • n:数组的长度。
    • swapped:布尔变量,用于检查是否进行过交换。
  3. 外层循环:使用 do-while 循环,以确保至少执行一次排序过程。
    • swapped 设置为 false,表示当前没有交换。
  4. 内层循环:遍历数组,比较相邻元素:
    • 如果 arr[i] 大于 arr[i + 1],则交换它们的位置,并将 swapped 设置为 true
  5. 减少范围:在每次遍历后,最大的元素会移动到数组的末尾,因此可以减少下一次遍历的范围(n--)。
  6. 返回结果:返回排序后的数组。

示例输出:

未排序数组: 64,34,25,12,22,11,90
排序后数组: 11,12,22,25,34,64,90

这个算法的时间复杂度为 (O(n^2)),适用于小规模数据的排序。

posted on 2024-07-13 20:52  joken1310  阅读(1)  评论(0编辑  收藏  举报