Aufgabe
Bestimmen Sie die asymptotische Laufzeit der folgenden Pseudocode-Fragmente als Θ- Notation in Abhängigkeit von n. Sie können davon ausgehen, dass n eine Potenz von 2 ist
a) while (n >= 1) {
for(i=1; i < n; i++){
print(i);
}
n=n/2;
}
b)
int result=n;
for(i=1; i <= n*n; i++) {
int value=i;
for(j=1; j <= i; j++)
result=result/2;
}
for(k=1; k <= n*n*n; k++)
result=result*4;
Ansatz
a) Die while-Schleife wird durchlaufen wenn n größer oder gleich 1 ist. Für alle i, die kleiner als n sind, werden die i's addiert und ausgegeben. Die n werden dann jeweils halbiert. Ich würde daher sagen, dass die Laufzeit linear ist, da kein expotentielles Wachstum oder sonstige logarithmische Faktoren dabei sind. (evtl. noch das mit dem halbieren?). Laufzeit daher Θ (n)
b) Es tut mir leid, ich habe nicht die geringste Ahnung, wie man hier vorzugehen hat. Vielleicht Θ (n log n), da im der oberen Scheife analog zu a) immer i's und j's linear aufaddiert werden, solange i kleiner als n² ist.. Und dann vllt. log (n), weil am Ende die Ergebnisse geteilt und später mit 4 multipliziert werden? :(