Shaker sort

Vedi la discussione

Si tratta di un bubble sort nei due sensi.

def shaker_sort(lista):
   n=len(lista)    
   inizio = 0
   fine   = n-1
   ultimo = n-1
   while(inizio < fine):
       for i in range(inizio, fine):  # PASSATA
           if(lista[i] > lista[i+1]):
               temp       = lista[i]
               lista[i]   = lista[i+1]
               lista[i+1] = temp
               ultimo=i
       fine=ultimo
       for i in range(fine, inizio-1, -1):   # PASSATA
           if(lista[i] > lista[i+1]):
               temp       = lista[i]
               lista[i]   = lista[i+1]
               lista[i+1] = temp
               ultimo=i
       inizio=ultimo