冒泡排序通过相邻元素比较交换使最大值逐轮上浮,最多n-1轮,可提前终止;快速排序采用分治法,选基准划分数组后递归排序左右子数组,核心为双指针分区。
冒泡排序和快速排序是两种经典排序算法,JavaScript 实现起来都不难,关键在于理解逻辑和边界处理。
每次遍历把当前未排序部分的最大值“冒泡”到末尾,重复直到全部有序。
function bubbleSort(arr) {
const a = [...arr]; // 不修改原数组
const n = a.length;
for (let i = 0; i < n - 1; i++) {
let swapped = false;
for (let j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
[a[j], a[j + 1]] = [a[j + 1], a[j]]; // 解构交换
swapped = true;
}
}
if (!swapped) break; // 提前结束
}
return a;
}选一个基准(pivot),把数组分为“小于基准”“大于等于基准”两部分,再递归排序这两部分。
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[Math.floor(arr.length / 2)];
const left = [], right = [], equal = [];
for (const x of arr) {
if (x < pivot) left.push(x);
else if (x > pivot) right.push(x);
else equal.push(x);
}
return [...quickSort(left), ...equal, ...quickSort(right)];
}
这是“简洁版”,易懂但额外用了空间。进阶可写原地分区(Lomuto 或 Hoare 分区方案),节省内存。

基本上就这些。写出来不复杂,但细节(比如循环边界、递归出口、是否稳定)容易忽略。
# javascript
# java
# app
# 排序算法
# 冒泡排序
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win10怎么创建桌面快捷方式 Win10为应用创建快捷方式【步骤】
c++如何实现一个高性能的环形队列(Ring Buffer)_c++无锁实现方法【并发】
php下载安装后memory_limit怎么设置_内存限制调整【技巧】
Windows蓝屏错误0x00000018怎么处理_驱动初始化错误解决
Python lxml的etree和ElementTree有什么区别
c# await 一个已经完成的Task会发生什么
Win11怎么设置开机自动连接宽带_Windows11创建拨号连接计划任务
PHP接收参数长度超限怎么办_修改postmaxsize设置教程【解答】
如何解决Windows字体显示模糊的问题?(ClearType设置)
Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】
Win11如何更改任务栏颜色 Win11自定义任务栏背景色【美化】
如何在Golang中编写异步函数测试_Golang异步操作测试策略
Win11怎么更改文件夹图标_自定义Win11文件夹外观样式【详解】
Django 测试数据库表缺失与字段未创建问题的完整解决方案
如何用::实现工具类方法调用_php静态工具类设计技巧【技巧】
php会话怎么开启_session_start函数的作用与使用时机【方法】
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
windows 10应用商店区域怎么改_windows 10微软商店切换地区方法
如何使用Golang实现负载均衡_分发请求到多个服务节点
Win11输入法切换快捷键怎么改_Windows 11自定义语言切换键位【教程】
PHP主流架构如何做单元测试_工具与流程【详解】
Win11怎么更改管理员名字 Win11修改账户名称详细步骤【教程】
如何从 Go 的 map[string]interface{} 中安全获取值
如何将文本文件中的竖排字符串转换为横排字符串
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何有效拦截拼接式恶意域名的垃圾信息
如何解决Windows时间不准的问题?(自动同步设置)
Win10电脑怎么设置IP地址_Windows10网络属性固定IP配置
Mac的“调度中心”与“空间”怎么用_Mac多桌面高效管理【技巧】
Windows 11怎么设置默认解压软件_Windows 11为ZIP/RAR文件指定默认打开程序
Mac如何使用听写功能_Mac语音输入打字【效率技巧】
Windows服务持续崩溃怎样修复_系统服务保护机制解析
PHP怎么接收URL中的锚点参数_获取#后面参数值的技巧【详解】
Win10怎样卸载自带Edge_Win10卸载Edge浏览器步骤【教程】
Win11怎么设置组合键快捷方式_Windows11自定义快捷键操作
Win11怎样彻底卸载自带应用_Win11彻底卸载自带应用方法【步骤】
跨文件调用类方法怎么用_php作用域操作符与自动加载配合【介绍】
c# 在高并发场景下,委托和接口调用的性能对比
c++的位运算怎么用 与、或、异或、移位操作详解【底层知识】
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
Go语言中slice追加操作的底层共享机制解析
Win11怎么更改任务栏位置_修改注册表将Win11任务栏置顶【教程】
c++的static关键字有什么用 静态变量和静态函数的应用场景【教程】
为什么Go建议使用error接口作为错误返回_Go Error接口设计原因说明
Windows 10怎么隐藏特定更新补丁_Windows 10使用微软官方工具wushowhide.diagcab
c++ reinterpret_cast怎么用 c++最危险的类型转换【详解】
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】
Windows10电脑怎么连接蓝牙设备_Win10蓝牙配对失败解决方法
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
2025-12-14
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。