Nous allons appliquer la même optimisation que BubbleSort2 à CocktailSort. Il nous faut nous souvenir des bornes du tableau pas encore trié, et le parcourir alternativement de droite à gauche et de gauche à droite:
debut=0; fin=lgr-2 Faire Pour tout i dans [debut,fin], faire: si i et i+1 doivent être échangées, le faire fin-- Pour tout i dans [fin, debut] en descendant, faire: si i et i+1 doivent être échangées, le faire debut++ tant qu'au moins l'un des parcours a inversé un élément