Die Zeit Komplexität hängt von allem ab, was Zeit braucht, also ja, es hängt von den Grenzen der for
Schleife ab. Es funktioniert im Allgemeinen am besten, um Schleifen von innen heraus zu analysieren. Also
for (j=1; j<=log(i); j++) {
O(1);
}
dauert O(1)*log(i)=O(log(i))
Zeit. Dann können wir die ganze Schleife schreiben als
for (i=1; i<=n; i++) {
O(log(i));
}
Die einfachste Sache an diesem Punkt ist, einfach alles zu addieren. Die Gesamtzeit ist daher:
O(log(1))+O(log(2))+O(log(3))+...+O(log(n-2))+O(log(n-1))+O(log(n))
=O(log(1) + log(2) + log(3) +...+ log(n-2) + log(n-1) + log(n))
Aufgrund der Eigenschaften von Logarithmen, dann ist dies O(log(n!))
und durch Stirling’s approximation, ist dies O(n log(n))
.
Was bedeutet "Ist die Zeitkomplexität abhängig von Inkrementierungsvariable der Schleife nur oder Vergleich aller Teile so"? Wo steckst du genau, um die Komplexität der Zeit zu berechnen? –
Willkommen bei Stack Overflow. Ich habe Ihren Beitrag bearbeitet, um die Grammatik zu korrigieren, und Ihren Algorithmus vervollständigt, indem Sie einen "O (1)" - Code in die innerste Schleife eingefügt haben. Ich habe auch die Begrüßungen zu Beginn und am Ende deines Posts entfernt - so machen wir es mit Stack Overflow. Ich musste einige Annahmen darüber treffen, was Sie eigentlich mit "Variable von Schleife erhöhen" und "Teil vergleichen" meinen; Wenn ich falsch angenommen habe, bitte [bearbeiten], um das zu korrigieren. – Teepeemm