Важно получить рабочее представление для обозначения Big-O.Я попытаюсь передать это ...
Как вы говорите, ваш алгоритм интуитивно "O (2N)", но представьте, что кто-то еще пишет алгоритм, который повторяется только один раз (следовательно, явно O (N))но тратит в два раза больше времени на обработку каждого узла или в сто раз больше.Вы можете видеть, что O (2N) только очень слабо наводит на мысль о чем-то более медленном, чем алгоритм O (N): не зная, что это за операции, O (N) может быть быстрее всего, скажем, в 50,1% случаев.
Big-O становится значимым только тогда, когда N становится огромным: если ваши операции изменяются по длине, скажем, 1000: 1, тогда разница между алгоритмами O (N) и O (NlogN) становится доминирующей только тогда, когда N превышает 1000 в квадрате (т.е.+1000000).Итак, нотация Big-O предназначена для рассуждения о стоимости операций на больших наборах, в которых линейные факторы, такие как 2x или 10x, просто не считаются релевантными и игнорируются.