Это не так уж далеко от истины. Есть несколько систематических методов, но это тяжелая работа, и даже в этом случае они имеют тенденцию к сокращению.
Big-O дает верхнюю границу. Если кто-то спрашивает вас о каком-либо алгоритме, а вы не знаете, вы можете сказать O (n ^ n) и, вероятно, быть правым (хотя существуют даже более медленные алгоритмы). Конечно, это не жесткий предел.
«Ярлык» - это, по сути, точка вдохновения, когда вы обнаруживаете образец, который доказывает некоторую конкретную верхнюю границу.
99% времени, большинство людей просто используют свою интуицию, чтобы найти хороший способ взглянуть на алгоритм, а затем делают достаточно для подтверждения этой границы. Например, вместо того, чтобы смотреть на фактический поток выполнения, обычно говорят «каждый элемент обрабатывается не более x раз, каждый раз с постоянным временем» (для алгоритма O (n)). Вы возможно пропустили тот факт, что, например, максимум log n элементов когда-либо обрабатываются, но если вы действительно не понимаете, что делает алгоритм, это маловероятно.
Конечно, это, вероятно, не поможет вам пройти курс алгоритмов.
Для систематических методов - хорошо, есть видео курса "MIT 6.046J / 18.410J Введение в алгоритмы", которые можно посмотреть на YouTube. Лектор является одним из авторов очень уважаемого алгоритма учебник .