# CocktailSort

Para melhorar ainda mais o algoritmo BubbleSort, precisamos ver comportamente dele bem de perto. Pode perceber que os elementos grandes se movem bem rápido enquanto os pequenos se movem lentamente para os destinos dele. Eles são então tradicionalmente chamados de "coelhos" e "tartarugas" respectivamente para valores grandes e rápidos e valores pequenos e lentos.

Para ajudar as tartarugas a se mover rápido, o cocktail sort percorre alternativamente a array da direita para a esquerda e da esquerda para a direita. Aqui está o pseudo-código:

    Do
      For all i in [0,len-2], do:
        if i and i+1 must be swapped, do it
      For all i in [len-2,0] (downward), do:
        if i and i+1 must be swapped, do it
    while at least one of the traversal swapped an element

Podemos perceber que cocktail sort alcança a mesma quantidade de trocas que o bubble sort, mas melhora levemente na quantidade de leituras. Entretanto, é ainda pior que o BubbleSort2 neste assunto.