for i=2 to n
j=3n
while j>=1 do
j=j/3
Какова будет временная стоимость данного алгоритма? Не могли бы вы описать пошаговое решение.Какова стоимость времени выполнения следующего алгоритма?
for i=2 to n
j=3n
while j>=1 do
j=j/3
Какова будет временная стоимость данного алгоритма? Не могли бы вы описать пошаговое решение.Какова стоимость времени выполнения следующего алгоритма?
Для того, чтобы рассчитать сложность времени, вы обычно перемещаетесь от внутренних петель к внешним контурам.
В настоящее время внутренний один представляет собой цикл 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).
Предполагая, что j = 1/3 означает j/= 3, код O (n log n), а не O (n^2). –
@PaulHankin Не стесняйтесь отвечать на это. Вопрос обновлен –
Как насчет 'j = 3n'? Должно ли это быть 'j = 3i'? –