冒泡排序通过嵌套循环比较相邻元素并交换实现升序或降序排列:外层控制轮数(最多n-1轮),内层执行比较交换,每轮最大(小)值归位;可优化为检测无交换时提前终止,并封装为返回新数组的纯函数。

JavaScript 数组遍历实现冒泡排序,核心是用嵌套循环比较相邻元素并交换位置,让较大(或较小)的值像气泡一样逐步“浮”到一端。
冒泡排序的基本逻辑
外层循环控制排序轮数(最多 n-1 轮),内层循环负责每轮中相邻元素的比较与交换。每轮结束后,最大(或最小)元素会到达末尾(或开头),后续轮次可缩小比较范围。
用 for 循环实现(升序)
这是最直观、易理解的写法:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 外层 for (let i = 0; i :控制轮数
- 内层 for (let j = 0; j :每轮少比一次,因末尾已有序
- 若 arr[j] > arr[j + 1],则交换两者(可用解构赋值:[arr[j], arr[j+1]] = [arr[j+1], arr[j]])
优化:提前终止(检测是否已有序)
如果某轮内层循环一次交换都没发生,说明数组已排好序,可直接退出:
- 在每轮开始前设 let swapped = false
- 交换时置为 true
- 本轮结束后检查 if (!swapped) break
封装成可复用函数
支持升序/降序,返回新数组(不修改原数组):
function bubbleSort(arr, ascending = true) {
const result = [...arr]; // 复制避免副作用
const n = result.length;
for (let i = 0; i result[j + 1]
: result[j] Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










