Полевой справочник
Сортировка с пользовательским компаратором
O(n log n)Сортируем по правилу, отличному от простого возрастания: передаём компаратор (или функцию ключа), который кодирует ничьи, несколько ключей или произвольный приоритет.
Сигналы
сортировка по нескольким полям / разрешение ничьей по второму ключупроизвольный порядок (не простое возрастание)сортировка по убыванию или по вычисляемому ключу«отсортируй так, чтобы X шло перед Y, если...»переупорядочивание объектов/записей, а не чисел
Шаблон
// sort by a custom / multi-key order
items.sort((a, b) => {
if (a.priority !== b.priority) return a.priority - b.priority;
return a.name.localeCompare(b.name);
});Похоже, но не то
- Быстрая сортировка (merge/quick): Компаратор - это не отдельный алгоритм сортировки, а способ сказать существующей сортировке за O(n log n), что значит «меньше». Сама сортировка внутри всё равно merge/quick, меняется только правило сравнения.
n до ~1e5..1e6, порядок задан пользовательским правилом (не просто числовым возрастанием) -> O(n log n) время, как у базовой сортировки. Несколько ключей сортировки или правило разрешения ничьей - сигнал написать компаратор, а не искать новый алгоритм.
Изучить этот паттерн