"""
swapped = π‘‘π‘Ÿπ‘’π‘’
while swapped = π‘‘π‘Ÿπ‘’π‘’
    swapped = 𝑓 π‘Žπ‘™π‘ π‘’
    for 𝑖 = 2 to 𝑛
        if 𝐴[𝑖 βˆ’ 1] > 𝐴[𝑖]
            troca(𝐴[𝑖 βˆ’ 1], 𝐴[𝑖])
            swapped = π‘‘π‘Ÿπ‘’π‘’
    if !swapped
        break
    swapped = 𝑓 π‘Žπ‘™π‘ π‘’
    for 𝑖 = 𝑛 to 2
        if 𝐴[𝑖] < 𝐴[𝑖 βˆ’ 1]
            troca(𝐴[𝑖], 𝐴[𝑖 βˆ’ 1])
            swapped = π‘‘π‘Ÿπ‘’π‘’
"""

def cocktailSort(a):
    n = len(a)-1
    swapped = True
    swapCount = 0
    while swapped:
        swapped = False
        for i in range(1, n):
            if a[i-1] > a[i]:
                a[i-1], a[i] = a[i], a[i-1]
                swapped = True
                print(a,"\n---\n");
                swapCount+=1
            if not swapped:
                break
        swapped = False
        for i in range(n, 1, -1):
            if a[i] < a[i-1]:
                a[i], a[i-1] = a[i-1], a[i]
                swapped = True
                print(a,"\n---\n");
                swapCount+=1
    print("Swaps Feitas: ",swapCount)
    return a

array = [0,9,8,7,6,5,4,3,2,1] 
# array = [0,1,2,3,4,5,6,7,8,9] # Melhor Caso
array = [9,8,6,5,4,3,2,1,0]
# array = [0,1,2,3,4,9,8,7,6,5]
print("Ordernação do Array:\n",array,"\n\n---\n")
array = cocktailSort(array)
print("Array Ordenado:\n",array)