」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 JavaScript 中實現穩定排序以在排序過程中保持元素順序?

如何在 JavaScript 中實現穩定排序以在排序過程中保持元素順序?

發佈於2024-11-17
瀏覽:684

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