通过 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中文网其他相关文章!