网易首页 > 网易号 > 正文 申请入驻

冒泡排序为什么慢?4年经验工程师拆解每一步

0
分享至

一个四年经验的 Node.js 工程师,把冒泡排序从原理到代码完整拆了一遍。结论先放这儿:它适合学,不适合上生产。


冒泡排序是最基础的排序算法之一。它的做法是反复遍历列表,比较相邻的两个元素,顺序不对就交换。名字的来源也在这——每一轮走完,较小或较大的元素会像水里的气泡一样浮到列表末端。

具体怎么走?从数组开头开始,比较索引 0 和索引 1 的两个元素。如果前一个比后一个大,交换;否则保持原样。接着比较索引 1 和索引 2,重复同样的判断。一路比到数组末尾,第一轮结束时,最大的元素已经挪到了最后一位。然后对剩下的未排序部分重复整个过程,每一轮都会把下一个最大的元素放到它最终该在的位置上。

复杂度是它被嫌弃的原因。平均情况和最坏情况(数组完全逆序)下,时间复杂度都是平方级;最好情况下能达到线性。由于是原地排序,空间复杂度是常数级。

实现层面,这位工程师给了一版现代 JavaScript 写法,只处理数字排序,但算法本身也能用于字符串按字母排序这类场景。代码里加了 Array.isArray() 校验,防止有人误传非数组参数导致崩溃。另外他先克隆了一份数组,保证不修改原数组。循环里用了一个 swapped 标记,某一轮没有发生任何交换就直接跳出——这是针对已排序数组的优化。

拿 [5, 1, 4, 2] 走一遍:

  • 第一轮:5 和 1 比,交换,得 [1, 5, 4, 2];5 和 4 比,交换,得 [1, 4, 5, 2];5 和 2 比,交换,得 [1, 4, 2, 5]。最大的 5 落位。
  • 第二轮:1 和 4 比,不换;4 和 2 比,交换,得 [1, 2, 4, 5]。
  • 第三轮:1 和 2 比,不换。数组已有序,结束。

最终结果 [1, 2, 4, 5]。

优点有三条:简单,容易理解、解释和书写;不需要额外内存,完全原地排序;配合优化后,遇到已排序列表能立刻停下。

缺点同样明确。效率差,平方级的时间复杂度让它在处理大数据集时远不如归并排序或快速排序。另外它交换过于频繁,不断写内存,无论从机器层面还是计算层面都是有代价的。

所以它的定位很清楚:拿来练算法思维可以,放进生产代码要三思。作者在文末还留了个问题——你知道 JavaScript 里用 Number.isFinite() 优雅地挡掉 NaN、Infinity 和 -Infinity 破坏数字比较的技巧吗?下一篇他会从排序转向查找,讲二分搜索。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中国驻泰国大使馆提醒赴泰国中国公民提高安全防范意识

中国驻泰国大使馆提醒赴泰国中国公民提高安全防范意识

环球网资讯
2026-10-16 21:06:06
山西男篮为什么打不过广厦?本场解说段冉一席话,直接戳中要害

山西男篮为什么打不过广厦?本场解说段冉一席话,直接戳中要害

阿薎美食
2026-10-18 06:56:37
巴西是我去过60个国家里,唯一一个发誓绝不去第二次的地方

巴西是我去过60个国家里,唯一一个发誓绝不去第二次的地方

千秋文化
2026-05-08 10:14:04
CSD拟主动介入特巴斯言论争议

CSD拟主动介入特巴斯言论争议

日常碎碎念啊
2026-10-17 04:41:39
表哥在澳门赌博,7天赢了800万,第八天的时候,人在宾馆没了

表哥在澳门赌博,7天赢了800万,第八天的时候,人在宾馆没了

千秋文化
2026-05-25 19:50:55
刚刚,集体跳水!霍尔木兹海峡,大消息!

刚刚,集体跳水!霍尔木兹海峡,大消息!

证券时报
2026-10-17 15:26:03
汪东兴贴身保护毛主席30年,晚年懊悔:当年瞎了眼,让主席用这人

汪东兴贴身保护毛主席30年,晚年懊悔:当年瞎了眼,让主席用这人

微野谈写作
2026-06-22 09:30:18
4万顶“帽子”、近2000名杰青,为什么换不来几块诺奖菲奖?从“杰青”取消称号到邓煜王虹获菲尔兹奖,中国基础研究的“帽子”之问

4万顶“帽子”、近2000名杰青,为什么换不来几块诺奖菲奖?从“杰青”取消称号到邓煜王虹获菲尔兹奖,中国基础研究的“帽子”之问

学术眺望
2026-10-16 20:20:03
新疆开门红3本土球员太关键!齐麟稳定炮台,2将成隐形功臣!

新疆开门红3本土球员太关键!齐麟稳定炮台,2将成隐形功臣!

篮球资讯达人
2026-10-17 23:29:04
日本养老体系彻底崩塌,给了中国警告:最先倒下的,也许不是老人

日本养老体系彻底崩塌,给了中国警告:最先倒下的,也许不是老人

福建睿平
2026-10-17 07:54:14
买了1000多台还是不够用!未来20年,中国还将要继续买俄罗斯航发

买了1000多台还是不够用!未来20年,中国还将要继续买俄罗斯航发

晓旓就是我
2026-10-12 19:54:49
普京高兴得不得了,终于可以松口气了!10月15日新鸭绿江大桥一开通,直接给俄罗斯砸出条潜在迂回链路,能源粮食矿产都能绕着进中国!

普京高兴得不得了,终于可以松口气了!10月15日新鸭绿江大桥一开通,直接给俄罗斯砸出条潜在迂回链路,能源粮食矿产都能绕着进中国!

林杰论事
2026-10-17 01:39:32
女子河边洗衣听见求救声,正要施救时,奶奶拦住:别去,装没听见

女子河边洗衣听见求救声,正要施救时,奶奶拦住:别去,装没听见

古怪奇谈录
2025-07-10 15:41:49
为了讨好英日,毁掉中国百亿项目,被坑后还有脸来找中国重归于好

为了讨好英日,毁掉中国百亿项目,被坑后还有脸来找中国重归于好

历史的烟火
2026-10-17 07:17:26
忍无可忍,魏德尔指责默茨:我们自己都没钱花了,你装什么大款?

忍无可忍,魏德尔指责默茨:我们自己都没钱花了,你装什么大款?

桑启红原
2026-10-18 02:09:47
没想到!委内瑞拉民调:马查多支持率52%遥遥领先,代总统仅19%!

没想到!委内瑞拉民调:马查多支持率52%遥遥领先,代总统仅19%!

麓谷隐士
2026-10-17 00:05:04
尊界送检“险酿乌龙”,鸿蒙智行:江淮做的。江淮:不清楚!

尊界送检“险酿乌龙”,鸿蒙智行:江淮做的。江淮:不清楚!

大厂财经社
2026-10-15 08:03:18
国民党多位司令直言:只有一人能与林彪粟裕抗衡,可惜被自家人废了

国民党多位司令直言:只有一人能与林彪粟裕抗衡,可惜被自家人废了

磊子讲史
2025-12-30 16:37:36
当老实人开始退场,系统就危险了

当老实人开始退场,系统就危险了

余奕阳
2026-10-13 12:58:19
这回解放军动真格了,随时准备战斗!五大海域同时进行实弹演练,目标至少有3个

这回解放军动真格了,随时准备战斗!五大海域同时进行实弹演练,目标至少有3个

史源观点
2026-10-16 20:41:33
2026-10-18 07:28:49
闪存猎手
闪存猎手
全网蹲好价的野生捕手,算力与羊毛都不可辜负。
200文章数 81关注度
往期回顾 全部

科技要闻

刘煜辉:99%的黄金分析师报告一钱不值

头条要闻

普京:包围并消灭2000人的乌军集群 这非比寻常

头条要闻

普京:包围并消灭2000人的乌军集群 这非比寻常

体育要闻

升级版杨瀚森再闯难关:当上开拓者第三中锋还得拼

娱乐要闻

庾澄庆罕谈前妻 撕下伊能静仅剩的体面

财经要闻

新一轮大跌源头,找到了!

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

健康
数码
时尚
房产
军事航空

看着很健康的人,怎么会突然猝死?

数码要闻

超七成笔记本OLED被三星拿捏!中国面板厂开始反击了

降落伞裤的3组搭配,打破秋冬沉闷感!

房产要闻

利好密集落地+现房好房断档,广州楼市买入窗口,正在倒计时!

军事要闻

“星盾”限速事件加剧美乌裂痕

无障碍浏览 进入关怀版