python -- 鸡尾酒排序


我需要,最狂的风,和最静的海


说明 -- wiki

鸡尾酒排序,也就是定向冒泡排序,鸡尾酒搅拌排序,搅拌排序(也可以视作选择排序的一种变形),涟漪排序,来回排序或快乐小时排序,是冒泡排序的一种变形。此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序


排序动图


算法实现

在冒泡算法的基础加上一层反向遍历

def cocktail(L):
    print(L)
    for i in range(len(L)-1):
        count = len(L)-1-i   
        a = i 
        for j in range(len(L)-1-i):        
            if L[j] > L[j+1]:            
                L[j], L[j+1] = L[j+1], L[j]

        while(count>a):
            if L[count]<L[count-1]:
                L[count],L[count-1] = L[count-1],L[count]
            count -= 1
        print(L)

    return L

if __name__ == '__main__':
    L = [23,42,2,34,34,322,5,87,6,9,0,45,666,1]
    L = cocktail(L)
    print(L)