2016-07-22 7 views
-3

Ich mag die asymptotische Komplexität im schlimmsten Fall die folgende Funktion bestimmen:die asymptotische Komplexität im schlimmsten Fall Bestimmung (O (N)) von einer bestimmten Funktion

int j; 
float r = 1.0; 
for (int i=1; i<(log n); i++){ 
    j = 1; 
    while (j <= i^2){ 
     r*=2; 
     j++; 
} 
print(r); 
+5

Das hart sein würde, da dieser Code nicht mit dem kompilieren unclosed '{' auf der Linie 3 und der 'n' log . Ich würde vorschlagen, entweder an einen Pseudo-Code oder an 100% echtes C++ zu bleiben. Was haben Sie bisher versucht, um die zeitliche Komplexität zu bestimmen? SO ist kein Hausaufgaben-Antwortdienst. – CollinD

+0

Sie erhalten einen float-Überlauf, wenn n> = 1000 –

Antwort

2

Zunächst werde ich davon ausgehen, Das i^2 in Ihrem Code bedeutet "i auf die Potenz von 2 erhöht", anstatt "i Bitwise-XOR 2", wie letztere mit C++ - Syntax konsistent ist, aber unvorhersehbare Ergebnisse erzeugt.

Zeitkomplexität wird durch die Summe gegeben

![enter image description here

Wir müssen die Summen der natürlichen Zahlen in die Potenz von 2 zu bewerten, die auf dieser Webseite mit Informationen: http://www.trans4mind.com/personal_development/mathematics/series/sumGeneralPowersNaturalNumbers.htm.

enter image description here

So ist die Zeitkomplexität ist

enter image description here

+0

yep jetzt habe ich es, noch die zweite Gleichung ist nicht so klar, ich dachte zuerst, es ist nur eine Gleichung, weil ich die ',' – user463035818