"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment implémenter un tri stable en JavaScript pour maintenir l'ordre des éléments pendant le tri ?

Comment implémenter un tri stable en JavaScript pour maintenir l'ordre des éléments pendant le tri ?

Publié le 2024-11-17
Parcourir:269

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

Tri stable en JavaScript

Objectif : Trier efficacement un tableau d'objets en fonction d'une clé, en maintenant la cohérence et la stabilité.

Recommandation d'algorithme : Bien que de nombreux algorithmes de tri existent, pour votre besoin spécifique de stabilité, envisagez d'implémenter une version modifiée d'un algorithme de tri non stable tel que QuickSort ou MergeSort.

Technique de tri stable :

Pour garantir la stabilité, ajoutez un critère supplémentaire à la fonction de comparaison de tri. Plus précisément, lorsque vous comparez deux éléments égaux, utilisez leurs positions d'origine dans le tableau d'entrée comme critère de départage. Cela conservera l'ordre des éléments avec la même clé.

Implémentation 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;
};

Exemple d'utilisation :

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

En utilisant cette technique, vous pouvez obtenir un tri stable même à partir d'algorithmes de tri non stables, ce qui le rend adapté à votre scénario d'environ 200 à 300 objets.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729255458. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3