当前位置:首页 > JavaScript

js实现冒泡

2026-02-01 02:18:43JavaScript

实现冒泡排序的JavaScript代码

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

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;
}

优化后的冒泡排序

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

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]的排序过程:

js实现冒泡

  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
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…