Порядок методов здесь не важен. Это говорит вам о том, насколько хорошо масштабируются алгоритмы, когда проблема становится все больше и больше. Вы не можете делать точные вычисления, если знаете только O(n)
==, что сложность возрастает в зависимости от размера задачи. Он не даст вам никаких цифр.
Это может означать, что алгоритм со сложностью O(n)
быстрее, чем алгоритм O(logn)
, для некоторого n. Поскольку O (log (n)) масштабируется лучше, когда он становится больше, мы точно знаем, что существует n
(размер проблемы), где алгоритм со сложностью O (logn) работает быстрее. Мы просто не знаем когда (для чего n
).
На простом английском языке:
Если вы хотите знать, «сколько поисков», вам нужны точные уравнения для решения, вам нужны точные числа. Сколько сравнений нужно, чтобы искать последовательно? (Помните, что задано n, поэтому вы можете указать число.) Сколько сравнений (в худшем случае!) Требуется для поиска с помощью двоичного поиска? Прежде чем вы сможете выполнить бинарный поиск, вы должны отсортировать. Давайте добавим количество сравнений, необходимых для сортировки, к стоимости бинарного поиска. Теперь сравните два числа, какое из них меньше?
Бинарный поиск быстрый, но сортировка медленная. Последовательный поиск медленнее, чем бинарный поиск, но быстрее, чем сортировка. Однако сортировку необходимо выполнить только один раз, независимо от того, сколько раз вы выполняете поиск. Итак, когда одна тяжелая сортировка перевешивает необходимость каждый раз выполнять медленный (последовательный) поиск?
Удачи!