считать приращение как шаг в цикле for или нет - PullRequest
0 голосов
/ 12 января 2012
for(int i=0;i<n;i++)
{
   // Some code
}

Обычно мы говорим, что этот цикл выполняется n + 1 раз, поэтому n + 1 шаг для этого, и есть один шаг инициализации i = 0.Это я прочитал в большинстве учебников.Мой вопрос заключается в том, что каждый раз, когда цикл запускается, есть еще один шаг увеличения i до i + 1, то есть i = i + 1, это также один из шагов, который следует учитывать при расчете сложности времени. Поскольку яновичок в алгоритме анализа поможет мне с этой проблемой.

1 Ответ

3 голосов
/ 12 января 2012

Обычно мы говорим, что этот цикл выполняется n + 1 раз, поэтому n + 1 шагов для этого [...]

Нет, мы говорим, что он работает для n итераций. В этом и заключается смысл объединения начального индекса 0 с проверкой границы, записанной как < n. Он выйдет из цикла, как только счетчик достигнет n, после выполнения n итераций (один для 0, один для 1, один для 2, ... один для n - 1, затем выйдет).

Работа, проделанная для увеличения счетчика, будь то i++, i += 1 или i = compute_the_next_index(i), не считается "шагом". Шаги - это итерации, то есть выполнение тела цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...