2016-02-02 10 views
-1

Мне сложно определить время выполнения каждого шага в алгоритме. Я просто не могу понять логику.Невозможно понять время выполнения в алгоритме

Мы все знаем до определения Big O или Theta в алгоритме, мы должны вычислить время выполнения каждого шага, затем вычисляем порядок, основанный на времени выполнения.

Мне легче рассчитать порядок, чем Big O или Theta, но моя проблема заключается в вычислении времени выполнения.

Пример:

for i=0 to **n** 

dothisStep 

Время выполнения этого является: (п + 1), что делает его порядок O (N) - это легкий один, и я понял why-- моя проблема связана с «более сложными». Иногда я должен получать n (n + 1)/2, иногда n (n + 1), но я просто не могу понять , как или почему! Каковы правила ?

+3

Этот вопрос/ответы могут вам помочь: http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it/4852666#4852666 – Pierre

+1

Это означает то же самое: " Большой O из N "==" порядок N "==" O (N) ". Когда мы говорим «в порядке X» в этом контексте, подразумевается, что «X является доминирующим фактором, определяющим сложность выполнения. Для больших входных данных мы можем игнорировать другие факторы». Вы можете видеть, что это означает O (X). –

ответ

1

Я думаю, что что-то, что поможет вам здесь при решении этих проблем, - это думать о , что происходит, когда n приближается к бесконечности.. В примере n + 1, что + 1 становится очень незначительным по отношению к n.

Ваш другой пример: n(n+1) - Снова добавив 1, когда n приближается к бесконечности, очень незначительно, поэтому мы отбрасываем + 1. Это оставляет n(n), что составляет n^2.

+1

Спасибо! это действительно помогло мне понять логику – napi15