public void foo(int n, int m) {
int i = m;
while (i > 100) {
i = i/3;
}
for (int k = i ; k >= 0; k--) {
for (int j = 1; j < n; j *= 2) {
System.out.print(k + "\t" + j);
}
System.out.println();
}
}
Ich dachte, die Komplexität wäre O (logn).
Das ist als ein Produkt der inneren Schleife, die äußere Schleife - wird nie mehr als 100 mal ausgeführt werden, so dass es weggelassen werden kann.Tricky Big-O Komplexität
Worüber ich nicht sicher bin, ist die while-Klausel, sollte sie in die Big-O-Komplexität integriert werden? Für sehr große i Werte könnte es eine Auswirkung haben, oder arithmetische Operationen, spielt keine Rolle in welcher Größenordnung, zählen als Grundoperationen und kann weggelassen werden?
+1 zu stützen ist O (log (base3) m + lg n) Hier ist die lg loggt bezieht sich! –
Die Weile zählt - es ist O (log m) –