Lassen Sie mich ein paar Dinge klarstellen, Sie interessieren sich für die Big-O-Notation - dies bedeutet Obergrenze . Mit anderen Worten, es ist in Ordnung, mehr Schritte zu zählen als Sie tatsächlich tun. Insbesondere können Sie den Algorithmus auf ändern
...
for (j = 0; j < n; j++)
...
Sie haben also zwei verschachtelte Schleifen, jede Schleife wird mal ausgeführt, wodurch Sie eine Obergrenze von O ( n 2 ) erhalten.nO ( n2)
Natürlich möchten Sie eine gute Schätzung für die Obergrenze haben. Zur Vervollständigung wollen wir also eine Untergrenze bestimmen. Dies bedeutet, dass es in Ordnung ist, weniger Schritte zu zählen. Betrachten Sie also die Änderung
for (i = n/2; i < n; i++)
for (j = 0; j < n/2; j++)
sum++;
Hier führen wir nur einige der Schleifeniterationen durch. Auch hier haben wir zwei verschachtelte Schleifen, aber diesmal haben wir Iterationen pro Schleife, die zeigt , dass wir zumindest n 2 / 4 Additionen. In diesem Fall bezeichnen wir diese asymptotische Untergrenze mit Ω ( n 2 ) . Da die untere und obere Grenze zusammenfallen, können wir sogar sagen, dass n 2 eine enge asymptotische Grenze ist, und wir schreiben Θ ( n 2 ) .n / 2n2/ 4Ω ( n2)n2Θ ( n2)
Wenn Sie mehr wissen möchten, lesen Sie hier .