用python语言实现冒泡排序

冒泡排序:

    eg: 54 26 93 17 77 31 44 55 20

从第一个开始依次与后面相邻一个数字相比较,54比26小,26排在第一个,54排到第二个,54与93再次相比54小排在前面,94去再次与后面的相比,依次轮回,得出最后结果

python语言的程序中最简单方法:

#coding:utf-8

def bubble_sort(alist):
    """冒泡排序"""
    n = len(alist)
    for j in range(n-1):
        for i in range(0,n-1-j):
            if alist[i] > alist[i+1]:
                alist[i],alist[i+1] = alist[i+1],alist[i]
if __name__ =="__main__":
    li = [54,26,93,17,77,31,44,55,20]
    print(li)
    bubble_sort(li)
    print(li)

此时最优时间不是O(n)

可以优化代码为:

#coding:utf-8

def bubble_sort(alist):
    """冒泡排序"""
    n = len(alist)
    for j in range(n-1):
        count = 0
        for i in range(0,n-1-j):
            if alist[i] > alist[i+1]:
                alist[i],alist[i+1] = alist[i+1],alist[i]
                count += 1
        if 0 == count:
            return

        
if __name__ =="__main__":
    li = [54,26,93,17,77,31,44,55,20]
    print(li)
    bubble_sort(li)
    print(li)

此时最优时间复杂度为O(n)

最坏时间复杂度为O(n的2次方)

猜你喜欢

转载自blog.csdn.net/wangshuai33/article/details/84331468