Verwirrt über die zeitliche Komplexität von verschachtelten Schleifen und auf der Suche nach Tipps
Sagen wir, ich habe zwei Codes:
Code A:
for i = 0;
for j = 0;
while(i<n){ // O(n)
while(j<n){ // O(n)
printf("hello");
.....
Laufzeit = o (n) x O (n) = O (n ^ 2).
Code B:
int result = 0;
int i = 0;
while (i < n/2){ //O(n)
result += arr[i];
i += 1;
while(i >= n/2 && i < n){ //O(n)
results += arr[i];
i +=1;
}
Laufzeit = O (n)
Wie kommt es, dass wir für Code B die beiden O (n) NICHT MULTIPLIEREN, um O (n ^ 2) zu erhalten, wie wir es für Code A getan haben? Sehr verwirrt darüber, wie man die Laufzeiten ermittelt.