Давайте определим N как один из возможных вводов данных.Алгоритм может иметь разные значения Big O в зависимости от того, к какому входу вы обращаетесь, но обычно есть только один большой ввод, который вас волнует.Без рассматриваемого алгоритма вы можете только догадываться.Однако есть некоторые рекомендации, которые помогут вам определить, что это такое.
Общее правило:
O (1) - скоростьПрограмма практически не меняется независимо от размера данных.Чтобы получить это, в программе вообще не должно быть циклов, работающих с данными.
O (log N) - программа немного замедляется, когда N резко увеличивается, в логарифмическом выражениикривая.Чтобы получить это, циклы должны проходить только часть данных.(например, бинарный поиск).
O (N) - скорость программы прямо пропорциональна размеру вводимых данных.Если вы выполните операцию с каждым блоком данных, вы получите это.Вы не должны иметь никаких вложенных циклов (которые влияют на данные).
O (N log N) - скорость программы значительно снижается при увеличении входных данных.Это происходит, когда в цикле выполняется операция O (logN), которая в противном случае была бы O (N).Так, например, у вас был цикл, который выполнял бинарный поиск для каждой единицы данных.
O (N ^ 2) - программа замедлится до сканирования с большим вводом ив конечном итоге остановится с достаточно большими данными.Это происходит, когда у вас есть петли NESTED.То же, что и выше, но на этот раз вложенный цикл - это O (N) вместо O (log N)
Итак, попробуйте представить операцию цикла как O (N) или O (log N).Затем, когда у вас есть вложения, умножьте их вместе.Если циклы НЕ являются вложенными, они не умножаются таким образом.Таким образом, две петли, отделенные друг от друга, будут просто O (2N), а не O (N ^ 2).
Также помните, что у вас могут быть петли под капотом, поэтому вам следует подумать и о них.Например, если вы сделали что-то вроде Arrays.sort (X) в Java, это будет операция O (N logN).Поэтому, если по какой-то причине у вас это внутри цикла, ваша программа будет работать намного медленнее, чем вы думаете.
Надеюсь, что это ответит на ваш вопрос.