算法—冒泡排序—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;
}
相关推荐
夏幻灵2 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
三天不学习3 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194053 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
代码什么用4 小时前
Spring基础使用
java·后端·spring
信奥卷王4 小时前
[GESP202609 六级] 分树规划
算法
Su米苏4 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
夏幻灵4 小时前
LeetCode 21:合并两个有序链表——双指针与哑节点详解
算法·leetcode·链表
码云数智-园园4 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁4 小时前
Java 异常体系详解:从字节码原理到最佳实践
java