Ich analysiere einige Laufzeiten verschiedener For-Loops, und wenn ich mehr Wissen bekomme, bin ich neugierig, dieses Problem zu verstehen, das ich noch nicht herausgefunden habe. Ich habe diese Übung mit dem Titel "Wie viele Sterne werden gedruckt":
for (int i = N; i > 1; i = i/2) System.out.println("*");
Die Antworten zur Auswahl sind
A: ~log N
B: ~N
C: ~N log N
D: ~0.5N^2
Die Antwort sollte also A sein und ich stimme dem zu, aber auf der anderen Seite. Sagen wir, N = 500
was wäre Log N
dann? Es wäre 2.7. Was ist, wenn wir das N=500
bei unserer obigen Übung sagen ? Das würde definitiv mehr als 2,7 Sterne drucken? Wie hängt das zusammen?
Weil es Sinn macht zu sagen, wenn die for-Schleife so aussah:
for (int i = 0; i < N; i++)
es würde N
Sterne drucken .
Ich hoffe, hier eine Erklärung dafür zu finden, vielleicht interpretiere ich all diese Dinge falsch und denke schlecht darüber nach. Danke im Voraus.