Вопрос проверяет умение сравнивать алгоритмы с учётом асимптотики и констант, а также находить границу их эффективности.
Нужно сравнить функции времени выполнения алгоритмов и найти значение n, при котором они становятся равны. До этой точки один алгоритм быстрее, после — другой. На практике такую точку часто находят экспериментально с помощью бенчмарков. Это особенно важно при выборе алгоритмов для конкретных размеров данных.
Точка, в которой один алгоритм начинает выигрывать у другого, называется точкой пересечения производительности.
Точка пересечения — это размер входных данных, при котором время выполнения двух алгоритмов одинаково.
Если:
T1(n) = a · n²
T2(n) = b · n log n
Можно решить уравнение:
a · n² = b · n log n
После упрощения получается приближённое значение n, начиная с которого второй алгоритм быстрее.
На практике чаще используют:
тестирование на реальных данных,
замеры времени выполнения,
профилирование.
# Псевдокод бенчмарка
for n in sizes:
measure_algo1(n)
measure_algo2(n)
влияние кэша и памяти,
особенности интерпретатора,
разные входные данные.
Точка, где один алгоритм становится быстрее другого, определяется либо аналитически, либо экспериментально. В реальных системах чаще полагаются на измерения.