Бесплатная бета: 30 дней полного доступа, без карты.Зарегистрироваться бесплатно

Мы используем необходимые куки для работы сайта (вход и язык). Формы обратной связи и сообщения об ошибке дополнительно используют Google reCAPTCHA для защиты от спама. Она загружается только если вы согласитесь. Политика конфиденциальности

Полевой справочник

Сортировка с пользовательским компаратором

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) время, как у базовой сортировки. Несколько ключей сортировки или правило разрешения ничьей - сигнал написать компаратор, а не искать новый алгоритм.

Изучить этот паттерн