2012-01-12 1 views
0
for(int i=0;i<n;i++) 
{ 
    // Some code 
} 

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

ответ

3

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

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

Произведено для того, чтобы увеличить счетчик, будь то i++, i += 1 или i = compute_the_next_index(i), не считается «шагом». Шагами являются итерации, т. Е. Выполнение тела цикла.

+0

Мой вопрос в том, почему мы не считаем это шагом. Если мы напишем i = i + 1 в нашем главном, то считаем, что это 1 шаг, то почему здесь мы не считаем это шагом. –

+0

Что вы подразумеваете под «шагом»? И когда вы «считаете шаги»? Вы говорите о «заявлениях», термин, часто используемый для описания текста программы? – unwind

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