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

冒泡排序为什么慢?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-17 01:00:18
“生平没碰过女孩”,万米高空自杀式袭击揭秘

“生平没碰过女孩”,万米高空自杀式袭击揭秘

中国新闻周刊
2026-10-17 23:24:03
难以置信!骑手前往广州豪宅配送680元双层蛋糕,竟然是为宠物庆生,该楼盘最小户型236平起步5200万

难以置信!骑手前往广州豪宅配送680元双层蛋糕,竟然是为宠物庆生,该楼盘最小户型236平起步5200万

火山詩话
2026-10-17 05:20:36
埃塞俄比亚选手托拉打破北马男子赛会纪录

埃塞俄比亚选手托拉打破北马男子赛会纪录

新京报
2026-10-18 10:04:14
从“政府来养老”到“第一责任人”:谁在自力更生,谁在稳享保障?

从“政府来养老”到“第一责任人”:谁在自力更生,谁在稳享保障?

马小白
2026-10-17 17:04:07
刷到网红四哥,真是让人哭笑不得,演了两年50亿富豪,连续4个月吃老坛酸菜面

刷到网红四哥,真是让人哭笑不得,演了两年50亿富豪,连续4个月吃老坛酸菜面

喜欢历史的阿繁
2026-10-18 01:39:26
普京已明确表示:俄罗斯已接管法国、德国、瑞典、比利时等欧洲四国企业在俄罗斯的资产,作为欧盟支持乌克兰直接参与战场敌对行动的回应

普京已明确表示:俄罗斯已接管法国、德国、瑞典、比利时等欧洲四国企业在俄罗斯的资产,作为欧盟支持乌克兰直接参与战场敌对行动的回应

吉刻新闻
2026-10-17 16:15:36
昆明一事业编岗九千人报名,仅报名费达90万元,2027年国考计划招录‌3.57万人‌,预计录取率不到0.9%,税务系统占国考总招录人数67.28%

昆明一事业编岗九千人报名,仅报名费达90万元,2027年国考计划招录‌3.57万人‌,预计录取率不到0.9%,税务系统占国考总招录人数67.28%

村里的月光
2026-10-18 08:26:58
法国一市长在约旦河西岸遭犹太定居者殴打;以总理办公室回应:暴力行为“不可接受”,涉事外交人员事先未与以军协调便进入敏感区域

法国一市长在约旦河西岸遭犹太定居者殴打;以总理办公室回应:暴力行为“不可接受”,涉事外交人员事先未与以军协调便进入敏感区域

扬子晚报
2026-10-18 11:05:00
今天10月18日,全体退休人员注意:10月养老金发放,必查三项!

今天10月18日,全体退休人员注意:10月养老金发放,必查三项!

老孙说
2026-10-18 09:15:14
越南不搞特色,直接融入世界

越南不搞特色,直接融入世界

跟着老李看世界
2026-10-16 21:39:00
4分钟2球!39岁梅西表演凌波微步:50米奔袭2变向 2次穿裆戏耍后卫

4分钟2球!39岁梅西表演凌波微步:50米奔袭2变向 2次穿裆戏耍后卫

风过乡
2026-10-18 09:32:20
学历贬值,日本的剧本已经演完了,我们几乎在逐页重演

学历贬值,日本的剧本已经演完了,我们几乎在逐页重演

起点人文
2026-10-15 13:07:03
亚马尔传射+造红,金球先生处子球,巴萨5-2贝蒂斯11连胜创纪录

亚马尔传射+造红,金球先生处子球,巴萨5-2贝蒂斯11连胜创纪录

钉钉陌上花开
2026-10-18 02:35:16
突发!江苏一工程设计集团发布结业通知:11月1日停产解散,承诺结清工资与补偿金

突发!江苏一工程设计集团发布结业通知:11月1日停产解散,承诺结清工资与补偿金

火山詩话
2026-10-18 06:21:59
首款陪伴机器人上市,配备160余种交互姿势,或成下一个万亿风口

首款陪伴机器人上市,配备160余种交互姿势,或成下一个万亿风口

疯狂小菠萝
2026-10-17 15:39:06
张水华夺冠!刷新PB+破赛会纪录获10万奖金 回应:天时地利人和

张水华夺冠!刷新PB+破赛会纪录获10万奖金 回应:天时地利人和

念洲
2026-10-18 11:30:47
命里有时终须有,命里无时莫强求。广州业主23年950万卖掉137方三房,26年买家断供房子法拍只值500万,银行希望他能半价买回去

命里有时终须有,命里无时莫强求。广州业主23年950万卖掉137方三房,26年买家断供房子法拍只值500万,银行希望他能半价买回去

捣蛋窝
2026-10-18 06:55:22
1950年地主傅德辉家意外搜出一张旧欠条,落款人写着朱德

1950年地主傅德辉家意外搜出一张旧欠条,落款人写着朱德

磊子讲史
2026-05-26 16:31:46
96岁无锡爷爷因年龄原因被旅行社拒绝后,独自乘40多小时火车到西藏旅游;他毕业于上海交大,旅行有问题会问AI

96岁无锡爷爷因年龄原因被旅行社拒绝后,独自乘40多小时火车到西藏旅游;他毕业于上海交大,旅行有问题会问AI

都市快报橙柿互动
2026-10-18 00:49:41
2026-10-18 12:31:00
闪存猎手
闪存猎手
全网蹲好价的野生捕手,算力与羊毛都不可辜负。
210文章数 81关注度
往期回顾 全部

科技要闻

王江舟院士:6G到底是不是骗局 是不是收割

头条要闻

00后女演员被传与郭麒麟结婚 曾出演电视剧《赘婿》

头条要闻

00后女演员被传与郭麒麟结婚 曾出演电视剧《赘婿》

体育要闻

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

娱乐要闻

曝郭麒麟与25岁知名女星已经结婚,女方回应关系

财经要闻

马斯克:美债问题只能靠AI和机器人解决

汽车要闻

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

态度原创

健康
本地
旅游
数码
手机

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

本地新闻

因新荣记出圈,这座浙东小城才是吃货天堂

旅游要闻

跨境游客数量超去年全年!这处美景游玩新体验再升级

数码要闻

英伟达官方平台下架RTX 5090 零售商正加速清库存

手机要闻

荣耀WIN 2系列手机官宣搭载荣耀鸿燕通信,配备全新自研射频增强芯片HONOR C3

无障碍浏览 进入关怀版