Является ли временной сложностью следующий код O (NV^2)?Какова временная сложность кода?
for i from 1 to N:
for j from 1 to V:
for k from 1 to A[i]://max(A) = V
z = z + k
Является ли временной сложностью следующий код O (NV^2)?Какова временная сложность кода?
for i from 1 to N:
for j from 1 to V:
for k from 1 to A[i]://max(A) = V
z = z + k
да, когда мы говорим о O-notation
, мы всегда думаем о верхнем переплете (или в худшем случае).
Таким образом, сложность для этого кода будет равна
O(N*V*maximum_value_of_A)
=O(N*V*V) // since,maximum value of A=V,so third loop can maximally iterate from 1 to V---V times
=O(N*V^2).
Не забудьте также ответить на ответ! –
Достоверно O (NV^2), поскольку это означает, что код никогда не медленнее, чем это. Поскольку max (A) = V, вы можете сказать, что наихудший случай был бы тогда, когда в каждом индексе A есть V. Если это так, то сложность может быть ограничена O (NV * V).
Вы можете очень точно рассчитать, что сложность цикла for k
может быть O (avg (A)). Это позволяет нам сказать, что вся функция Omega (NV * Avg (A)), где ср (А) = < В.
Theta обозначения (что означает asympthotical сложность) бы можно сказать, как Theta (NV * O (V)), O (V), представляющий сложность функции, которая никогда не будет расти быстрее, чем V, но не является постоянной.
Это так, как вы сказали. Единственное исключение может быть, если A [i], даже если он может быть максимально V, он будет, например, всегда постоянным «в среднем» (амортизированная сложность). Не вдаваясь в подробности - для этого есть много хороших ресурсов. И университеты, конечно. – PawelP
Для примера того, что говорит Пауэлл, предположим, что A полон нулей, за исключением одного значения, которое равно V. Внутренний цикл будет работать только для этого i, поэтому общая временная сложность будет равна O (NV + V^2) – hugomg
Да, сложность времени O (NV^2). Вот и все. – Hungry