Я не хочу просить о помощи с чем-то простым, но я не могу понять, как ответить на этот вопрос.
Compute the time complexity of the following program
fragment:
sum = 0;
for i=1 to n do
for j=1 to i do
k = n*2
while k>0 do
sum=sum+1;
k = k div 2;
Я понимаю, что то, что находится внутри цикла while, занимает O (1), цикл while занимает O (logn), но тогда я не понимаю, как это соединяется с вложенными циклами for, поскольку я привык просто делать вложенные сигма-нотации для петель.
Спасибо!
k
достигает 0 или ниже. еслиk
— положительное целое число, в какой-то момент оно достигнет 1 (или будет округлено до 1), а затем делится на 2, что дает 0,5 и может быть снова округлено до 1 (зависит от того, как вы решите выполнить округление), который создает бесконечный цикл. Если k — действительное число, то оно в любом случае никогда не достигнет 0 или ниже (если оно началось с положительного значения). - person Ron Teller   schedule 04.03.2014