首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入js的sort稳定排序

深入js的sort稳定排序

作者头像
biaoblog.cn 个人博客
发布2025-05-21 09:13:32
发布2025-05-21 09:13:32
18000
代码可运行
举报
运行总次数:0
代码可运行

问:在js中的sort 如果俩个值相同 他们的排序是什么样的?

在 JavaScript 中使用 .sort() 方法时,如果两个值“相同”,也就是 比较函数返回 0,那么它们在排序后的位置是:

排序算法决定的,不保证原顺序,也就是说,它们可能调换位置,也可能不动

✅ 简洁回答:

  • .sort()不稳定排序算法(在老浏览器或旧规范中),即:

“相等元素的相对顺序不一定保持不变”。

  • 但在 **现代浏览器(如 Chrome V8 引擎、Safari、Firefox)**中,通常实现了稳定排序

“如果两个元素相等,它们的原始顺序会被保留”。

👀 举个例子:

代码语言:javascript
代码运行次数:0
运行
复制
const arr = [
 { name: 'apple', value: 2 },
 { name: 'banana', value: 1 },
 { name: 'cherry', value: 2 }
];

arr.sort((a, b) => a.value - b.value);
console.log(arr);

可能结果(现代浏览器中):

代码语言:javascript
代码运行次数:0
运行
复制
[
 { name: 'banana', value: 1 },
 { name: 'apple', value: 2 },  // 原顺序保留 ✅
 { name: 'cherry', value: 2 }
]

但如果排序算法是不稳定的,有可能会变成:

代码语言:javascript
代码运行次数:0
运行
复制
[
 { name: 'banana', value: 1 },
 { name: 'cherry', value: 2 },
 { name: 'apple', value: 2 }
]

🧠 如何理解“稳定排序”?

稳定排序的定义:

如果 ab 相等,并且 ab 前面,那么排序之后 a 仍然在 b 前面。

不稳定排序就可能交换相等元素的位置。

举例说明2:

a=1 b=2 c=1

不稳定排序:

可能是a= 1 c= 1 b=2

也可能是c= 1 a=1 b=2

稳定排序:

a= 1 c= 1 b=2

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问:在js中的sort 如果俩个值相同 他们的排序是什么样的?
  • ✅ 简洁回答:
  • 👀 举个例子:
  • 🧠 如何理解“稳定排序”?
  • 举例说明2:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档