"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo implementar una clasificación estable en JavaScript para mantener el orden de los elementos durante la clasificación?

¿Cómo implementar una clasificación estable en JavaScript para mantener el orden de los elementos durante la clasificación?

Publicado el 2024-11-17
Navegar:816

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

Clasificación estable en JavaScript

Objetivo: Ordenar eficientemente una serie de objetos según una clave, manteniendo la coherencia y la estabilidad.

Recomendación de algoritmo: Si bien existen muchos algoritmos de clasificación, para su necesidad específica de estabilidad, considere implementar una versión modificada de un algoritmo de clasificación no estable como QuickSort o MergeSort.

Técnica de clasificación estable:

Para garantizar la estabilidad, agregue un criterio adicional a la función de comparación de clasificación. Específicamente, al comparar dos elementos iguales, use sus posiciones originales en la matriz de entrada como desempate. Esto mantendrá el orden de los elementos con la misma clave.

Implementación de 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;
};

Ejemplo de uso:

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

Al utilizar esta técnica, puede obtener una clasificación estable incluso a partir de algoritmos de clasificación no estables, lo que la hace adecuada para su escenario de aproximadamente 200-300 objetos.

Declaración de liberación Este artículo se reimprime en: 1729255458 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3