Python冒泡排序

# 冒泡排序,最小的元素像气泡一样逐渐上浮至水面
# 从最后面开始,相邻比较,较小元素的放在较大的元素上面
# 一轮之后最小的会跑到最上面,继续循环把次小的再排上来,直到整体有序


def bubble_sort_1(alist):
    # 从后往前遍历索引
    for j in range(len(alist)-1, 0, -1):
        count = 0
        # 把最大的往后换并固定住,再找出剩余的数中最大的,以此类推
        for i in range(j):
            if alist[i] > alist[i+1]:
                alist[i], alist[i+1] = alist[i+1], alist[i]
                count += 1


def bubble_sort_2(alist):
    # 从前往后遍历索引
    for j in range(0, len(alist)):
        count = 0
        # 把最小的往前换并固定住,再找出剩余的数中最小的,以此类推
        for i in range(len(alist)-1, j, -1):
            if alist[i] < alist[i-1]:
                alist[i], alist[i-1] = alist[i-1], alist[i]
                count += 1


if __name__ == '__main__':

    nums1 = [54, 26, 93, 17, 77, 31, 44, 55, 20, 13]
    bubble_sort_1(nums1)
    print(nums1)

    nums2 = [54, 26, 93, 17, 77, 31, 44, 55, 20, 13]
    bubble_sort_2(nums2)
    print(nums2)

原文地址:https://www.cnblogs.com/sn0wp3ak/p/13733710.html