public int Loop(int[] array1) {
int result = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
for (int k = 1; k < array1.length; k = k * 2) {
result += j * j * array1[k] + array1[i] + array1[j];
}
}
}
return result;
}
Ich versuche, die Komplexitätsfunktion zu finden, die die Anzahl der arithmetischen Operationen hier zählt. Ich weiß, dass die Komplexitätsklasse O (n^3) sein würde, aber ich habe ein bisschen Mühe, die Schritte zu zählen.Großes O für 3 verschachtelte For-Loops?
Meine bisherige Argumentation ist, dass ich die Anzahl der arithmetischen Operationen, die 8 ist, zählen, also wäre die Komplexitätsfunktion einfach 8n^3?
Jede Führung in die richtige Richtung würde sehr geschätzt werden, danke!
Sind Sie sicher, dass die Komplexität "O (n^3)" ist? Ich meine, sicher, es wäre in "O (n^3)", genauso wie es in "O (n!)" Ist, aber das ist nicht die engste Grenze. –
Hm Ich meine, die Art, wie wir in der Klasse unterrichtet wurden, bestand darin, die Anzahl der Schritte (arithmetische Operationen) zu zählen und dann zu zählen, wie oft jede Operation gemacht werden musste. So kam ich zu O (n^3). Ich kann aber definitiv falsch liegen. Ich folgte auch der Logik, dass 2 verschachtelte For-Loops normalerweise 0 (n^2) von dem waren, was ich bisher gemacht habe. – ellaaur
Denken Sie sorgfältig über das 'k = k * 2' im innersten' ForUpdate' nach. –