Eine alternative Art, darüber nachzudenken, ist, wie der Maximalwert von i
wird, bevor er zurückgesetzt wird. Wie sich herausstellt, ist es daher einfacher zu überlegen, wie sich die vorherige Sortierreihenfolge A
auf die Laufzeit des Algorithmus auswirkt.
Beachten Sie insbesondere, dass i
das Array [A[0], ..., A[N-1]]
in aufsteigender Reihenfolge sortiert wird , wenn Sie seinen neuen Maximalwert als N bezeichnen .
Was passiert also, wenn wir das Element A[N]
zum Mix hinzufügen ?
Die Mathematik:
wir an, es passt an Position . Dann benötigen wir Schleifeniterationen (die ich ), um es an die Stelle , -Iterationen, um es an die Stelle , und im Allgemeinen: N Schritte N - 1 N + ( N - 1 ) N - 2pNNSchritteN- 1N+ ( N- 1 )N- 2
stepsN(pN)=N+(N−1)+(N−2)+⋯+(pN+1)=12(N(N+1)−pN(pN+1))
Für ein zufällig sortiertes Array nimmt die Gleichverteilung auf für jedes mit: { 0 , 1 , … , N } NpN{0,1,…,N}N
E(stepsN(pN))=∑a=1NP(pN=a)stepsN(a)=∑a=1N1N12(N(N+1)−a(a+1))=12(N(N+1)−13(N+1)(N+2))=13(N2−1)=Θ(N2)
Die Summe kann nach Faulhabers Formel oder dem Wolfram-Alpha-Link unten angezeigt werden.
Für ein umgekehrt sortiertes Array ist für alle und wir erhalten:NpN=0N
stepsN(pN)=12N(N+1)
Genau, es dauert streng länger als jeder andere Wert von .pN
Für ein bereits sortiertes Array ist und , wobei die Terme niedrigerer Ordnung relevant werden.Schritte N ( p N ) = 0pN=NstepsN(pN)=0
Gesamtzeit:
Um die Gesamtzeit zu erhalten, fassen wir die Schritte über das ganze bis . (Wenn wir sehr vorsichtig wären, würden wir die Swap- und Loop-Iterationen zusammenfassen und uns um die Start- und Endbedingungen kümmern, aber es ist einigermaßen einfach zu erkennen, dass sie in den meisten Fällen nicht zur Komplexität beitragen.) .N
Und wieder mit Linearität der Erwartung und Faulhabers Formel:
Expected Total Steps=E(∑N=1nstepsN(pN))=∑N=1nE(stepsN(pN))=Θ(n3)
Wenn aus irgendeinem Grund nicht (z. B. ist die Verteilung der Arrays, die wir betrachten, bereits sehr nah an der Sortierung), muss dies nicht immer der der Fall sein. Es sind jedoch sehr spezifische Verteilungen für , um dies zu erreichen!Θ ( N 2 ) p NstepsN(pN)Θ(N2)pN
Relevante Lektüre: