当前位置:首页 > JavaScript

js实现冒泡

2026-02-01 02:18:43JavaScript

实现冒泡排序的JavaScript代码

冒泡排序是一种简单的排序算法,通过重复遍历待排序列表,比较相邻元素并交换位置,使得较大(或较小)的元素逐渐“浮”到列表的顶端。

js实现冒泡

function bubbleSort(arr) {
  const n = arr.length;
  for (let i = 0; i < n - 1; i++) {
    for (let j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; // 交换元素
      }
    }
  }
  return arr;
}

优化后的冒泡排序

在基础版本上增加标志位,当某一轮遍历没有发生交换时,说明数组已有序,可以提前终止排序。

js实现冒泡

function optimizedBubbleSort(arr) {
  const n = arr.length;
  let swapped;
  for (let i = 0; i < n - 1; i++) {
    swapped = false;
    for (let j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
        swapped = true;
      }
    }
    if (!swapped) break; // 没有交换则提前退出
  }
  return arr;
}

使用示例

const array = [64, 34, 25, 12, 22, 11, 90];
console.log(bubbleSort([...array])); // [11, 12, 22, 25, 34, 64, 90]
console.log(optimizedBubbleSort([...array])); // 同上

算法特性

  • 时间复杂度:最坏情况O(n²),最好情况(优化后)O(n)
  • 空间复杂度:O(1),属于原地排序
  • 稳定性:是稳定排序(相等元素不会改变相对位置)

可视化理解

冒泡排序的每一轮会将当前未排序部分的最大值“冒泡”到正确位置。例如数组[5,3,8,4,2]的排序过程:

  1. 第一轮后:[3,5,4,2,8](8到位)
  2. 第二轮后:[3,4,2,5,8](5到位)
  3. 第三轮后:[3,2,4,5,8](4到位)
  4. 第四轮后:[2,3,4,5,8](完成排序)

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…