2016-05-26 3 views
1

Когда вы просматриваете дерево, вы посещаете каждый узел только один раз, вероятно, и логически сложность времени, это O (n). Но что если вы проходите с использованием вложенных циклов (например, 2, 3 для циклов), почему сложность по времени не O (n^2) или O (n^3)? Я чувствую, что это может быть о границах, но может из-за недостатка знаний. Я был бы очень признателен, если бы кто-то объяснил это чисто.Как сложность сложенных решений вложенных циклов равна O (n)

Редактировать: извините, у меня нет примера кода для показа. Как сказано в нижеприведенном ответе, я даже не знаю, что на самом деле (и я не смог найти какой-либо примерный код.), Как можно пройти через несколько вложенных циклов . Это было просто то, что, если у меня возник вопрос, когда я думал об этом. Но ниже ответ в значительной степени удовлетворяет мое замешательство.

+0

Непонятно, что вы подразумеваете под «пересечением с помощью вложенных циклов». Можете ли вы привести пример кода или добавить некоторую точность в описание? – Odrade

+0

Потому что есть более быстрые и медленные способы сделать что-то? –

+0

Если у меня есть структура древовидной структуры, и я пересекаю ее с 3 для вложенных циклов. Итак, это O (n^3)? в соответствии с тем, что Im, посещающий каждый узел только один раз, не должен быть O (n)? или его оба истины и O (n^3) справедливы и сверху связаны как O (n^4). @Odrade – raflman

ответ

1

Сложность вашего кода не имеет ничего общего с номером используемых вами петель. Это зависит от того, что именно делают эти петли.

Если вы используете петли 2/3/4/n в коде обхода дерева таким образом, что вы посещаете каждый узел в дереве только один раз, то ваша сложность по-прежнему равна O (n), хотя я не знаете, как в этом конкретном примере вы могли бы пересекать дерево, используя несколько вложенных циклов.

Если, однако, у вас есть 2 цикла, так что для каждой итерации первого цикла (каждого узла дерева) ваш второй внутренний цикл выполняет еще один полный обход дерева, тогда ваша сложность будет равна O (n^2).

+0

Примечание: вам не нужно посещать каждый узел только один раз. Если вы посетили его два (три, ...) раза, это все равно «O (n)» –

+0

Если вы посещаете каждый узел более одного раза, а постоянный множитель, умноженный на n, например. 3n, 4n, 5n .. то да, это еще O (n) –

Смежные вопросы