Une autre façon de penser à cela est ce que i
devient la valeur maximale de avant qu’elle ne soit réinitialisée. En fin de compte, il est ainsi plus facile de raisonner sur l’effet de l’ordre de tri précédent A
sur le temps d’exécution de l’algorithme.
En particulier, notez que lorsque vous i
définissez sa nouvelle valeur maximale, appelons-le N, le tableau [A[0], ..., A[N-1]]
est trié par ordre croissant.
Alors que se passe-t-il lorsque nous ajoutons l'élément A[N]
au mélange?
Les mathématiques:
Eh bien, disons que ça va à la position . Ensuite, nous avons besoin de itérations de boucle (notées ) pour le déplacer à la place de , itérations pour le déplacer à la position , et en général: N pas N - 1 N + ( N - 1 ) N - 2pNNstepsN−1N+(N−1)N−2
stepsN(pN)=N+(N−1)+(N−2)+⋯+(pN+1)=12(N(N+1)−pN(pN+1))
Pour un tableau trié au hasard, prend la distribution uniforme sur pour chaque , avec: { 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)
la somme peut être montrée en utilisant la formule de Faulhaber ou le lien Wolfram Alpha en bas.
Pour un tableau inversement trié, pour tout , et on obtient:NpN=0N
stepsN(pN)=12N(N+1)
exactement, en prenant strictement plus longtemps que toute autre valeur de .pN
Pour un tableau déjà trié, et , les termes d'ordre inférieur devenant pertinents.pN=NstepsN(pN)=0
Temps total:
Pour obtenir le temps total, nous résumons les étapes sur toute la . (Si nous faisions très attention, nous résumerions les swaps ainsi que les itérations de boucle et nous nous occuperions des conditions de début et de fin, mais il est assez facile de voir qu'elles ne contribuent pas à la complexité dans la plupart des cas) .N
Et encore une fois, en utilisant la linéarité des attentes et la formule de Faulhaber:
Expected Total Steps=E(∑N=1nstepsN(pN))=∑N=1nE(stepsN(pN))=Θ(n3)
Bien sûr, si pour quelque raison que ce soit n’est pas (par exemple, la distribution des tableaux que nous examinons est déjà très proche d’être triée), cela n’est pas toujours nécessaire. être le cas. Mais il faut des distributions très spécifiques sur pour y parvenir!Θ ( N 2 ) p NstepsN(pN)Θ(N2)pN
Lecture pertinente: