算法—冒泡排序—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;
}
相关推荐
永遠_11 小时前
YAML格式化工具
java
兰亭妙微UI设计公司12 小时前
兰亭妙微ui设计公司分享:B端组件命名如何支持团队协作
前端·javascript·vue.js
曼岛_12 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
一枕槐安48712 小时前
RAG 服务扛住高并发:缓存、队列、限流三件套
java·spring·缓存·异步任务·rag·断路器
Wang's Blog12 小时前
Java 项目实战: 交友项目 - 动态查询开工:昨日回顾与今日任务
java·python·交友
云和数据.ChenGuang12 小时前
光哥说Python 异常深度解析:从异常模型到工程化实践
java·前端·人工智能·python·langchain
小大宇12 小时前
Vue知识点-ElementPlus-03提示框+询问+通知
前端·javascript·vue.js
SL_staff12 小时前
APS动态重排实践:在多品种小批量场景下实现5分钟插单响应
java·开源·产品
j7~13 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
前端技术官13 小时前
前端的技术判断力是怎么练出来的?
javascript·web前端·localstorage·debounce·弱网处理