Цель: Эффективно сортировать массив объектов на основе ключа, сохраняя согласованность и стабильность.
Рекомендация по алгоритму: Несмотря на то, что существует множество алгоритмов сортировки, для вашей конкретной потребности в стабильности рассмотрите возможность реализации модифицированной версии нестабильного алгоритма сортировки, такого как 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 объектами.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3