2017-01-25 2 views
-2
for i=2 to n 
    j=3n 
    while j>=1 do 
     j=j/3 

Какова будет временная стоимость данного алгоритма? Не могли бы вы описать пошаговое решение.Какова стоимость времени выполнения следующего алгоритма?

+1

Предполагая, что j = 1/3 означает j/= 3, код O (n log n), а не O (n^2). –

+0

@PaulHankin Не стесняйтесь отвечать на это. Вопрос обновлен –

+0

Как насчет 'j = 3n'? Должно ли это быть 'j = 3i'? –

ответ

1

Для того, чтобы рассчитать сложность времени, вы обычно перемещаетесь от внутренних петель к внешним контурам.

В настоящее время внутренний один представляет собой цикл while. Она заканчивается, когда j < 1, это имеет место после того, как O (журнал 3n) шаги или O (1 + 3 войти п) или O (журнал п). Обратите внимание, что здесь мы используем n: счетчик контуров i внешнего контура здесь не играет.

наружной петля с другой стороны итеративна O (N-1) раз, или таким образом O (N) раз и каждый раз, когда он делает то же самое количество работы: O (журнал n). Таким образом, общая сумма баллов равна O (n log n).

Вы можете уронить 3 в журнале, так как O (журнал к п) является O (журнал N) для фиксированного K. Таким образом, более удобная нотация: O (n log n).

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