Не искам да моля за помощ за нещо просто, но изглежда не мога да разбера как да отговоря на този въпрос.
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, тъй като съм свикнал да правя просто вложени сигма нотации for for цикли.
Благодаря!
k
достигне 0 или по-ниско. акоk
е положително цяло число, в даден момент то ще достигне 1 (или ще бъде закръглено до 1), след това разделено на 2, което дава 0,5 и може да бъде закръглено до 1 отново (зависи от това как решите да извършите закръгляването), което създава безкраен цикъл. Ако k е реално число, то така или иначе никога няма да достигне 0 или по-ниско (ако е започнало с положителна стойност). - person Ron Teller   schedule 04.03.2014