"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como implementar a classificação estável em JavaScript para manter a ordem dos elementos durante a classificação?

Como implementar a classificação estável em JavaScript para manter a ordem dos elementos durante a classificação?

Publicado em 17/11/2024
Navegar:562

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

Classificação estável em JavaScript

Objetivo: Classifique com eficiência uma matriz de objetos com base em uma chave, mantendo a consistência e a estabilidade.

Recomendação de algoritmo: Embora existam muitos algoritmos de classificação, para sua necessidade específica de estabilidade, considere implementar uma versão modificada de um algoritmo de classificação não estável, como QuickSort ou MergeSort.

Técnica de classificação estável:

Para garantir a estabilidade, adicione um critério adicional à função de comparação de classificação. Especificamente, ao comparar dois elementos iguais, use suas posições originais na matriz de entrada como desempate. Isso manterá a ordem dos elementos com a mesma chave.

Implementação 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;
};

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

Ao usar esta técnica, você pode obter classificação estável mesmo a partir de algoritmos de classificação não estáveis, tornando-a adequada para seu cenário de cerca de 200-300 objetos.

Declaração de lançamento Este artigo foi reimpresso em: 1729255458 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3