”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 JavaScript 中实现稳定排序以在排序过程中保持元素顺序?

如何在 JavaScript 中实现稳定排序以在排序过程中保持元素顺序?

发布于2024-11-17
浏览:626

How to Implement Stable Sorting in JavaScript for Maintaining Element Order During Sorting?

JavaScript中的稳定排序

目标:基于键对对象数组进行高效排序,保持一致性和稳定性。

算法推荐: 虽然存在许多排序算法,但为了满足您对稳定性的特定需求,请考虑实现非稳定排序算法,如 QuickSort 或 MergeSort。

稳定排序技术:

为了确保稳定性,请在排序比较函数中添加一个附加条件。具体来说,当比较两个相等的元素时,使用它们在输入数组中的原始位置作为决胜局。这将保持具有相同键的元素的顺序。

JavaScript实现:

const stableSort = (arr, key, order) => {
  // Get initial positions of elements
  const positions = arr.map((el, i) => i);

  // Sort using modified comparison function
  arr.sort((a, b) => {
    const keyA = a[key];
    const keyB = b[key];

    if (keyA === keyB) {
      // Fall back to position for stability
      return positions[a] - positions[b];
    }

    return order === "asc" ? keyA - keyB : keyB - keyA;
  });

  return arr;
};

用法示例:

const arr = [
  { id: 1, value: 4 },
  { id: 2, value: 2 },
  { id: 3, value: 4 },
  { id: 4, value: 3 },
];

const sortedArr = stableSort(arr, "value", "asc");

// Output:
// [
//   { id: 2, value: 2 },
//   { id: 1, value: 4 },
//   { id: 3, value: 4 },
//   { id: 4, value: 3 },
// ]

通过使用该技术,即使在不稳定的排序算法中也能获得稳定的排序,适合您200-300个左右对象的场景。

版本声明 本文转载于:1729255458如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3