Wenn ich eine Schleife in einer anderen Schleife habe, aber weiß, dass die innere Schleife nur einmal ausgeführt wird, ist dieser Algorithmus dann immer noch O (n ^ 2)?
For i = 1 to n do
For j = 1 to i do
If (i==j) do
For k = 1 to n
{Do stuff}
Die sehr innere Schleife wird höchstens einmal ausgeführt, da i
sie nur j
einmal pro Iteration der zweiten Schleife gleich ist. Ist das noch n ^ 3?
quelle
Nein, verschachtelte Schleifen bedeuten nicht automatisch, dass Ihr Algorithmus O (n ^ k) ist. Die grundlegende Arbeitseinheit in Ihrem Beispiel ist
{Do stuff}
, also müssen Sie zählen, wie oft dies alsn
Erhöhung ausgeführt wird. Sie brauchen diej
Schleife nicht einmal , da sie nur von 1 bis 1 zählti
und nichts tut, bis sie erreicht isti
. Nur bei dieser einen Iteration funktioniert es tatsächlich, daher lautet Ihr Beispielcode O (n ^ 2).quelle