「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 並べ替え中に要素の順序を維持するために JavaScript で安定した並べ替えを実装するにはどうすればよいですか?

並べ替え中に要素の順序を維持するために JavaScript で安定した並べ替えを実装するにはどうすればよいですか?

2024 年 11 月 17 日に公開
ブラウズ:722

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

JavaScript での安定した並べ替え

目的: 一貫性と安定性を維持しながら、キーに基づいてオブジェクトの配列を効率的に並べ替えます。

アルゴリズムの推奨事項: 多くの並べ替えアルゴリズムが存在しますが、特定の安定性が必要な場合は、QuickSort や MergeSort などの非安定な並べ替えアルゴリズムの修正バージョンを実装することを検討してください。

安定した並べ替え手法:

安定性を確保するために、並べ替え比較関数に追加の基準を追加します。具体的には、2 つの等しい要素を比較する場合、入力配列内の元の位置をタイブレーカーとして使用します。これにより、同じキーを持つ要素の順序が維持されます。

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