当前位置:首页 > JavaScript

js实现冒泡算法

2026-03-15 18:13:05JavaScript

冒泡排序算法原理

冒泡排序是一种简单的排序算法,通过重复遍历待排序的列表,比较相邻元素并交换位置,使得较大的元素逐渐“冒泡”到列表的末尾。每次遍历都会将当前未排序部分的最大元素移动到正确位置。

js实现冒泡算法

JavaScript实现代码

function bubbleSort(arr) {
  const len = arr.length;
  for (let i = 0; i < len - 1; i++) {
    // 标志位,用于优化
    let swapped = false;
    for (let j = 0; j < len - 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;
}

代码说明

  • 外层循环控制遍历的轮数,共需进行n-1轮比较(n为数组长度)。
  • 内层循环进行相邻元素的比较和交换,每轮结束后,最大的元素会移动到数组末尾。
  • swapped标志位用于优化算法,当某一轮没有发生交换时,说明数组已有序,可提前终止排序。

时间复杂度分析

  • 最坏情况下(逆序数组),时间复杂度为$O(n^2)$。
  • 最好情况下(已排序数组),优化后的时间复杂度为$O(n)$。
  • 平均时间复杂度为$O(n^2)$。

使用示例

const unsortedArray = [64, 34, 25, 12, 22, 11, 90];
console.log(bubbleSort(unsortedArray)); 
// 输出: [11, 12, 22, 25, 34, 64, 90]

标签: 算法js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

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

vue.js实现轮播

vue.js实现轮播

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

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现tab选项卡切换

js实现tab选项卡切换

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

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…