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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage