Étant donné le pire des cas pour n, nous pouvons construire le pire des cas pour n + 1 comme suit: nous faisons un «cycle d'échange» comme suit: nous prenons n + 1, mettre dans un [ 0 ], et nous échangeons un [ 0 ] avec l'élément maximal de ses enfants, qui est un [ 1 ] ou un [ 2 ], que nous échangeons à nouveau avec l'élément maximum de ses enfants et ainsi de suite, jusqu'à ce que nous quittions le n-élément tas, à quel point nous mettons ce dernier élément à la n + 1-th position.
Un exemple: le pire des cas pour n = 5 est [ 5 , 4 , 3 , 2 , 1 ]. On échange en 6 ce qui crée le tas[ 6 , 5 , 3 , 4 , 1 ], après quoi on se retrouve avec 2, que l'on insère à la fin: [ 6 , 5 , 3 , 4 , 1 , 2 ].
La méthode ci-dessus fonctionne par induction: on part du pire résultat pour n - 1 éléments et effectuer une opération de tri vers le bas à l'envers, maximisant le nombre de swaps qu'il doit faire (⌊ journal( n ) ⌋swaps). Vous ne pouvez pas faire plus de swaps que cela, donc vous maximisez le nombre de swaps après la première opération d'extraction min, après quoi vous vous retrouvez avec le pire cas pourn - 1éléments pour la prochaine opération d'extraction min. Cela implique que le nombre de swaps est en effet maximal.
Notez que cette méthode donne des résultats différents de ceux que vous avez obtenus:
[1]
[2, 1]
[3, 2, 1]
[4, 3, 1, 2]
[5, 4, 1, 3, 2]
[6, 5, 1, 4, 2, 3]
[7, 6, 1, 5, 2, 4, 3]
[8, 7, 1, 6, 2, 4, 3, 5]
[9, 8, 1, 7, 2, 4, 3, 6, 5]
[10, 9, 1, 8, 2, 4, 3, 7, 5 ,6]
Cependant, les deux solutions sont correctes:
[5, 4, 1, 3, 2]
[2, 4, 1, 3| 5]
[4, 2, 1, 3| 5]
[4, 3, 1, 2| 5]
[2, 3, 1| 4, 5]
[3, 2, 1| 4, 5]
[5, 4, 3, 2, 1]
[1, 4, 3, 2| 5]
[4, 1, 3, 2| 5]
[4, 2, 3, 1| 5]
[1, 2, 3| 4, 5]
[3, 2, 1| 4, 5]
[6, 5, 1, 4, 2, 3]
[3, 5, 1, 4, 2| 6]
[5, 3, 1, 4, 2| 6]
[5, 4, 1, 3, 2| 6]
[2, 4, 1, 3| 5, 6]
[4, 2, 1, 3| 5, 6]
[4, 3, 1, 2| 5, 6]
[2, 3, 1| 4, 5, 6]
[3, 2, 1| 4, 5, 6]
[6, 5, 3, 4, 1, 2]
[2, 5, 3, 4, 1| 6]
[5, 2, 3, 4, 1| 6]
[5, 4, 3, 2, 1| 6]
[1, 4, 3, 2| 5, 6]
[4, 1, 3, 2| 5, 6]
[4, 2, 3, 1| 5, 6]
[1, 2, 3| 4, 5, 6]
[3, 2, 1| 4, 5, 6]