关于各种排序算法的动画演示 https://visualgo.net/zh/sorting?slide=1
- 冒泡排序
 
- 比对的次数复杂度是O(n^2),交换的时间复杂度也是O(n^2)
 - 优势:无需额外的存储空间,可以在链表上操作
 - 原理:比较两个相邻的元素,将值大的元素交换到右边
def bubbleSort(alist): for passnum in range(len(alist)-1,0,-1): for i in range(passnum): if alist[i] > alist[i+1]: alist[i],alist[i+1] = alist[i+1],alist[i] 
- 性能改进:如果某趟比对没有发生任何交换,说明列表已经排好序,可以提前结束算法
 
def shortbubbleSort(alist):
    exchanges = True
    passnum = len(alist)-1
    while passnum > 0 and exchanges:
        exchanges = False
        for i in range(passnum):
            if alist[i] > alist[i+1]:
                alist[i],alist[i+1] = alist[i+1],alist[i]
                exchanges = True
        passnum -= 1 

京公网安备 11010502036488号