python -- 奇偶排序


[HTML_REMOVED][HTML_REMOVED]好像突然有了软肋,又突然有了铠甲![HTML_REMOVED][HTML_REMOVED]


说明 -- wiki

该算法中,通过比较数组中相邻的(奇-偶)位置数字对,如果该奇偶对是错误的顺序(第一个大于第二个),则交换。下一步重复该操作,但针对所有的(偶-奇)位置数字对。如此交替进行下去


动图


代码实现

def odd_even(L):
    print(L)
    while True:
        sorted = True
        # 奇-偶
        for i in range(0,len(L)-1,2):
            if L[i]>L[i+1]:
                L[i], L[i+1] = L[i+1], L[i]
                sorted = False

        print(L)

        # 偶-奇
        for i in range(1,len(L)-1,2):
            if L[i]>L[i+1]:
                L[i], L[i+1] = L[i+1], L[i]
                sorted = False
        print(L)

        if sorted:
            break

    return L

if __name__ == '__main__':
    L = [23,42,2,34,34,322,5,43,2,3,13,56,32]
    L = odd_even(L)
    print(L)