Ich weiß, wie die Zeit Komplexität für fast jede Option zu finden (einfache Funktion, Funktion mit Schleifen, etc.), aber ich kann nicht herausfinden, wie Zeit Komplexität der Funktion, die eine andere Funktion zu bestimmen, insbesondere wenn Die aufrufende Funktion befindet sich in einer Schleife.Zeit Komplexität der Funktion eine andere Funktion aufrufen?
Ich schrieb einige Funktionen, die ich als Beispiel verwende.
int g(int k) {
int i=0;
while(k>0) {
i += k;
k= k/2;
}
return i;
}
int f(int n) {
int m = 0;
for (int i=0; i<n; ++i) {
for (int j=i; j<n; ++j) {
m += g(j);
}
}
return m;
}
ich kann nicht herausfinden: habe ich die Zeit Komplexität der Funktion g()
, zu prüfen, und wenn es sein muss, wie es f()
in Funktion berechnen? Oder ignoriere ich einfach die Funktion g()
und schließe nur die Funktionsaufrufe in die Funktion f()
ein?
complexitiy der f O (n^2 ln (n)), es würde sei O (n^2) wenn g eine konstante Komplexität hätte – user463035818
Vereinbare mit tobi303, wenn die Funktion g eine konstante Komplexität hätte, dann wäre die Gesamtkomplexität O (n^2). –
Warum schreiben Sie dann "fs Komplexität ist O (n^2)"? Das ist irreführend. – user463035818