首页 >web前端 >js教程 >不稳定的 JavaScript 排序可以变得稳定吗?

不稳定的 JavaScript 排序可以变得稳定吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-18 20:43:03568浏览

Can a Non-Stable JavaScript Sort Become Stable?

通过 Twist 在 JavaScript 中实现稳定排序

对对象集合进行排序是编程中的一项常见任务,通常需要稳定性来保留原始内容相等元素的顺序。然而,所采用的排序算法可能并不是固有的稳定性。

引入稳定的非稳定排序

一种令人惊讶但有效的方法涉及转换非稳定排序功能变为稳定功能。在排序之前,先获取所有元素的位置。修改排序条件,将主键和元素原始位置作为辅助键。

以位置作为平局进行比较,保证最终排序结果的稳定性。

JavaScript 中的实现

下面的代码片段提供了 JavaScript 中的示例实现:

<code class="javascript">function stableSort(array, key) {
  const positions = [];

  for (let i = 0; i < array.length; i++) {
    positions[i] = i;
  }

  array.sort((a, b) => {
    const keyComparison = a[key].localeCompare(b[key]);
    return keyComparison || positions[a] - positions[b];
  });
}</code>

在此代码中,stableSort 函数按指定的顺序对数组进行排序密钥以稳定的方式。 Positions 数组捕获元素的初始位置。排序条件依赖于 localeCompare 进行字符串比较,并回退到位置比较作为决胜局。

这种方法提供了利用任何不稳定排序算法的灵活性,同时保持相等元素的稳定性。

以上是不稳定的 JavaScript 排序可以变得稳定吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn