使用 JavaScript 数组进行稳定排序

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探讨 JavaScript 中稳定排序的概念。稳定排序是一种在数组中元素值相同时保留其顺序的技术。我们将使用一个利用 Array.prototype.map()Array.prototype.sort() 方法的函数来实现数组的稳定排序。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript/BasicConceptsGroup -.-> javascript/variables("`Variables`") javascript/BasicConceptsGroup -.-> javascript/data_types("`Data Types`") javascript/BasicConceptsGroup -.-> javascript/arith_ops("`Arithmetic Operators`") javascript/BasicConceptsGroup -.-> javascript/comp_ops("`Comparison Operators`") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("`Higher-Order Functions`") subgraph Lab Skills javascript/variables -.-> lab-28623{{"`使用 JavaScript 数组进行稳定排序`"}} javascript/data_types -.-> lab-28623{{"`使用 JavaScript 数组进行稳定排序`"}} javascript/arith_ops -.-> lab-28623{{"`使用 JavaScript 数组进行稳定排序`"}} javascript/comp_ops -.-> lab-28623{{"`使用 JavaScript 数组进行稳定排序`"}} javascript/higher_funcs -.-> lab-28623{{"`使用 JavaScript 数组进行稳定排序`"}} end

稳定排序

要对数组进行稳定排序并保留相同值元素的初始索引,请执行以下步骤:

  1. 打开终端/SSH 并输入 node 开始练习编码。
  2. 使用 Array.prototype.map() 将输入数组的每个元素与其对应的索引配对。
  3. 使用 Array.prototype.sort() 以及一个 compare 函数对列表进行排序,同时在比较的元素相等时保留初始顺序。
  4. 再次使用 Array.prototype.map() 将数组元素转换回其初始形式。
  5. 原始数组不会被修改,而是返回一个新数组。

以下是 JavaScript 中 stableSort 函数的实现:

const stableSort = (arr, compare) =>
  arr
    .map((item, index) => ({ item, index }))
    .sort((a, b) => compare(a.item, b.item) || a.index - b.index)
    .map(({ item }) => item);

你可以使用一个数组和一个 compare 函数调用 stableSort 函数,以获得一个包含已排序列表的新数组,如下所示:

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const stable = stableSort(arr, () => 0); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

总结

恭喜你!你已经完成了稳定排序实验。你可以在 LabEx 中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程