冒泡排序python

思路:可以将第一次排序过程先写出来,当第i个元素大于第i+1个元素时,将两个元素位置进行交换,等于小于都不需要做任何操作

0~n-1是因为这个过程始终是第i个元素与其后一个元素相比较,不需要移动到最后一个元素

def bubble_sort(alist):
    n=len(alist)
    for i in range(0,n-1):   
        if alist[i]>alist[i+1]:
            alist[i],alist[i+1]=alist[i+1],alist[i]

这个时候,我们需要考虑需要这样比较多少次,我们可以发现,不是每次都比较n-1次,第二次就是比较n-2次了,引入一个变量j,当第一次比较时,进行n-1次,j=0

 当第二次比较时,n-2次,j=1

 当第三次比较时,n-3次,j=2

 当第四次比较时,n-4次,j=3

 其实就是n-1-j

这时候我们可以将完整代码写完,如下:

#coding:utf-8
def bubble_sort(alist):
    n=len(alist)
    for j in range(n-1):
        for i in range(n-1-j):
            if alist[i]>alist[i+1]:
                alist[i],alist[i+1]=alist[i+1],alist[i]


a=[0,100,25,98,4,66,108,51]
print(a)
bubble_sort(a)
print(a)

最后结果如下:

冒泡排序python