算法—冒泡排序—js(教学示例、小数据)

冒泡排序原理

冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置,使较大的元素逐渐"浮"到数组末尾。

特点
时间复杂度 :平均 O(n²),最优(已有序时)O(n)
空间复杂度 :O(1)(原地排序)
稳定性:稳定(相同元素相对位置不变)

javascript 复制代码
// 冒泡排序
function bubbleSort(arr) {
  let n = arr.length;
  let swapped; // 优化标志

  for (let i = 0; i < n - 1; i++) {
    swapped = false;
    // 每轮遍历后,最大的元素会沉到最后
    for (let j = 0; j < n - 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;
}
相关推荐
Upsy-Daisy1 分钟前
Hermes Agent 学习笔记 02:安装、配置与第一次运行
java·前端·数据库
一壶纱8 分钟前
一个用于 UniApp 项目的 Pinia 持久化插件
前端·javascript·vue.js
凌涘10 分钟前
JS 八大基本类型:一场内存视角的冒险之旅
前端·javascript
用户46825574591312 分钟前
Testcontainers 在 Windows Docker Desktop 上跑不通:协议层不兼容 + 4 种可行环境
java·后端
数据知道17 分钟前
视觉伪装(上):Canvas 指纹生成原理与 Skia 图形库底层注入噪声
开发语言·javascript·ecmascript·数据采集·指纹浏览器
金融小师妹20 分钟前
AI因子共振模型显示:金银比突破区间上沿,白银定价逻辑进入再校准阶段
人工智能·算法·均值算法·线性回归
J2虾虾30 分钟前
C语言 typedef 用法
c语言·数据结构·算法
文阿花33 分钟前
Echarts实现自定旋转3D饼状图
javascript·3d·echarts·饼状图
程序员小羊!34 分钟前
12.Java 多线程编程
java·开发语言
hunterkkk(c++)38 分钟前
线段树例题
算法