python冒泡排序算法

冒泡排序

冒泡排序:暂且规定:排序好的顺序是从小到大。
顾名思义,冒泡冒泡,就像烧水一样,刚开始凉水的时候,看着很平静,
当烧到一定温度后,就会有小水泡从下边冒上来。
冒泡排序算法就是根据两两比较,如果这个数比和它比较的数大,那么他俩交换位置,
继续和下一个数比较,直到最后位置。

第一轮比较:
第一次比较:33和2比较, 交换位置:2,33,12,34,22,56,32,45,43
第二次比较:33和12比较,交换位置:2,12,33,34,22,56,32,45,43
第三次比较:33和34比较:位置不变
第四次比较:34和22比较:交换位置:2,12,33,22,34,56,32,45,43
第五次比较:34和56比较:位置不变
第六次比较:56和32比较:交换位置:2,12,33,22,34,32,56,45,43
第七次比较:56和45比较:交换位置:2,12,33,22,34,32,45,56,43
第八次比较:56和43比较:交换位置:2,12,33,22,34,32,45,43,56
第二轮比较:
重复第一轮的过程,还是从第一个开始,即2和12 比较。。。。
python冒泡排序算法

lst = [33,2,12,34,22,56,32,45,43]  # 假如有如乱序列表

for i in range(len(lst)-1):   # 有多少个数比较多少轮
    print("============================")
    print("第",(i+1),"轮:")
    print("============================")
    for j in range(len(lst)-i-1):  # 已经冒泡的不再比较,即最后一轮只比较一次
        if lst[j]>lst[j+1]:  # 每次紧挨着的两个比较
            lst[j],lst[j+1] = lst[j+1],lst[j]   # 交换位置
        print("第",(j+1),"次:",lst)
    

print("最后结果:",lst)

打印结果:

============================
第 1 轮:
============================
第 1 次: [2, 33, 12, 34, 22, 56, 32, 45, 43]
第 2 次: [2, 12, 33, 34, 22, 56, 32, 45, 43]
第 3 次: [2, 12, 33, 34, 22, 56, 32, 45, 43]
第 4 次: [2, 12, 33, 22, 34, 56, 32, 45, 43]
第 5 次: [2, 12, 33, 22, 34, 56, 32, 45, 43]
第 6 次: [2, 12, 33, 22, 34, 32, 56, 45, 43]
第 7 次: [2, 12, 33, 22, 34, 32, 45, 56, 43]
第 8 次: [2, 12, 33, 22, 34, 32, 45, 43, 56]
============================
第 2 轮:
============================
第 1 次: [2, 12, 33, 22, 34, 32, 45, 43, 56]
第 2 次: [2, 12, 33, 22, 34, 32, 45, 43, 56]
第 3 次: [2, 12, 22, 33, 34, 32, 45, 43, 56]
第 4 次: [2, 12, 22, 33, 34, 32, 45, 43, 56]
第 5 次: [2, 12, 22, 33, 32, 34, 45, 43, 56]
第 6 次: [2, 12, 22, 33, 32, 34, 45, 43, 56]
第 7 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
============================
第 3 轮:
============================
第 1 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
第 4 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 5 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 6 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 4 轮:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 4 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 5 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 5 轮:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 4 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 6 轮:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 7 轮:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 8 轮:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]


最后结果: [2, 12, 22, 32, 33, 34, 43, 45, 56]

其实可以看出来在第三轮第4次比较就已经成功排好序了,却还在往下比较,这就是冒泡排序,效率不高,但却是最简单的也是最好理解的排序算法,下一篇说快速排序,一种比较快的排序算法。