«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать стабильную сортировку в JavaScript для поддержания порядка элементов во время сортировки?

Как реализовать стабильную сортировку в JavaScript для поддержания порядка элементов во время сортировки?

Опубликовано 17 ноября 2024 г.
Просматривать:579

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

Стабильная сортировка в JavaScript

Цель: Эффективно сортировать массив объектов на основе ключа, сохраняя согласованность и стабильность.

Рекомендация по алгоритму: Несмотря на то, что существует множество алгоритмов сортировки, для вашей конкретной потребности в стабильности рассмотрите возможность реализации модифицированной версии нестабильного алгоритма сортировки, такого как QuickSort или MergeSort.

Техника стабильной сортировки:

Чтобы обеспечить стабильность, добавьте дополнительный критерий в функцию сравнения сортировки. В частности, при сравнении двух равных элементов используйте их исходные позиции во входном массиве в качестве средства разрешения конфликтов. Это сохранит порядок элементов с одним и тем же ключом.

Реализация 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