Alternatywnym sposobem myślenia o tym jest, jaka jest maksymalna wartość iprzed zresetowaniem. Jak się okazuje, łatwiej jest zrozumieć, w jaki sposób poprzednia kolejność sortowania Awpływa na czas działania algorytmu.
W szczególności zauważ, że kiedy iustawia się nową maksymalną wartość, nazwijmy ją N, tablica [A[0], ..., A[N-1]]jest sortowana w porządku rosnącym.
Co się stanie, gdy dodamy element A[N]do miksu?
Matematyka:
Powiedzmy, że pasuje do pozycji . Następnie potrzebujemy iteracji pętli (które oznaczę ), aby przenieść ją do położenia , aby przenieść ją do miejsca i ogólnie: N kroki N - 1 N + ( N - 1 ) N - 2pN.N.krokiN.- 1N.+ ( N- 1 )N.- 2
krokiN.( pN.) = N+ ( N- 1 ) + ( N- 2 ) + ⋯ + ( strN.+ 1 )= 12)( N( N+ 1 ) - pN.( pN.+ 1 ) )
W przypadku losowo posortowanej tablicy przyjmuje rozkład równomierny na dla każdego , z: { 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)
suma może być pokazana za pomocą wzoru Faulhabera lub łącza Wolfram Alpha na dole.
Dla odwrotnie posortowanej tablicy, dla wszystkich , i otrzymujemy:N.pN=0N
stepsN(pN)=12N(N+1)
dokładnie, biorąc ściśle dłużej niż jakakolwiek inna wartość .pN
W przypadku już posortowanej tablicy i , przy czym terminy niższego rzędu stają się odpowiednie.kroków N ( p N ) = 0pN=NstepsN(pN)=0
Czas całkowity:
Aby uzyskać całkowity czas, możemy podsumować kroki nad wszystkimi . (Gdybyśmy byli bardzo ostrożni, podsumowalibyśmy swapy, a także iteracje pętli i zadbali o warunki początkowe i końcowe, ale dość łatwo jest zauważyć, że w większości przypadków nie przyczyniają się do złożoności) .N
I znowu, używając liniowości oczekiwań i Formuły Faulhabera:
Expected Total Steps=E(∑N=1nstepsN(pN))=∑N=1nE(stepsN(pN))=Θ(n3)
Oczywiście, jeśli z jakiegoś powodu nie jest (np. Rozkład tablic, na który patrzymy, jest już bardzo bliski sortowania), to nie zawsze musi to być sortowane niech tak będzie. Ale aby to osiągnąć, potrzeba bardzo specyficznych dystrybucji na !Θ ( N 2 ) p NstepsN(pN)Θ(N2)pN
Odpowiednia lektura: