Tri Cocktail

Pour améliorer encore notre algorithme, il faut regarder un peu plus en détail son comportement. On peut constater que les grands éléments sont très rapidement mis en place tandis que les petits éléments se déplacent très lentement vers leur destination. On parle classiquement de lièvres et de tortues pour désigner respectivement les grandes valeurs et les petites valeurs.

Pour permettre aux tortues d'aller plus vite, le tri cocktail parcours alternativement le tableau de gauche à droite et de droite à gauche. Voici son pseudo-code:

Faire
  Pour tout i dans [0,lgr-2], faire:
    si i et i+1 doivent être échangées, le faire
  Pour tout i dans [lgr-2,0] en descendant, faire:
    si i et i+1 doivent être échangées, le faire
tant qu'au moins l'un des parcours a inversé un élément

On constate que le tri cocktail fait très exactement le même nombre d'échanges que le tri à bulle, mais qu'il améliore les choses sur le nombre de lectures. Il reste cependant moins bon que BubbleSort2 en la matière.