当前位置:首页 > 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实现变形

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…