„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie implementiert man eine stabile Sortierung in JavaScript, um die Elementreihenfolge während der Sortierung beizubehalten?

Wie implementiert man eine stabile Sortierung in JavaScript, um die Elementreihenfolge während der Sortierung beizubehalten?

Veröffentlicht am 17.11.2024
Durchsuche:164

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

Stabile Sortierung in JavaScript

Ziel: Ein Array von Objekten basierend auf einem Schlüssel effizient sortieren und dabei Konsistenz und Stabilität wahren.

Algorithmus-Empfehlung: Obwohl es viele Sortieralgorithmen gibt, sollten Sie für Ihren spezifischen Stabilitätsbedarf die Implementierung einer modifizierten Version eines instabilen Sortieralgorithmus wie QuickSort oder MergeSort in Betracht ziehen.

Stabile Sortiertechnik:

Um Stabilität zu gewährleisten, fügen Sie der Sortiervergleichsfunktion ein zusätzliches Kriterium hinzu. Insbesondere beim Vergleich zweier gleicher Elemente verwenden Sie deren ursprüngliche Positionen im Eingabearray als Tiebreaker. Dadurch wird die Reihenfolge der Elemente mit demselben Schlüssel beibehalten.

JavaScript-Implementierung:

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;
};

Beispielverwendung:

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 },
// ]

Mit dieser Technik können Sie auch bei instabilen Sortieralgorithmen eine stabile Sortierung erzielen, sodass sie für Ihr Szenario mit etwa 200–300 Objekten geeignet ist.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729255458 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3