Antwort

2

Die Aussage ist korrekt, da O(n log n) eine Teilmenge von O(n^2) ist; Ein formaler Beweis würde jedoch darin bestehen, geeignete Konstanten auszuwählen und zu konstruieren.

0

Wenn die Rufwahrscheinlichkeit von beiden gleich ist, dann haben Sie Recht. Wenn die Wahrscheinlichkeit für beides nicht gleich ist, müssen Sie eine amortisierte Analyse durchführen, bei der Sie seltene teure Anrufe (n²) in viele schnelle Anrufe (n log (n)) aufteilen.

Für eine schnelle Sortierung (die normalerweise n log (n), aber nur n² benötigt) können Sie nachweisen, dass die durchschnittliche Laufzeit n log (n) aufgrund der amortisierten Analyse ist.

+0

Ich denke, du hast die Frage falsch verstanden. Ich nehme an, dass es sich um einen Algorithmus handelt, der aus zwei Schritten besteht: Einer, der in O (n log n) -Zeit läuft, gefolgt von einem, der in O (n²) -Zeit läuft. Keine Wahrscheinlichkeiten beteiligt. – ruakh

+0

dann ist die Antwort von codor am besten – gartenkralle

0

eine der Regeln der Komplexitätsanalyse ist, dass Sie die Begriffe mit niedrigeren Exponenten oder niedrigeren Faktoren entfernen müssen.

nlogn vs n^2 (divide both by n) 

logn vs n 

logn ist kleiner als n ist, als Sie es von der Komplexität Gleichung entfernen

so, wenn die Komplexität O (n log n + n^2) ist, wenn n sehr groß ist, wird der Wert von nlogn ist nicht signifikant im Vergleich zu n^2, das ist, warum Sie es entfernen und neu schreiben als O (n^2)

Verwandte Themen