python数据结构与算法第八天【冒泡排序】

时间:2023-03-09 04:24:22
python数据结构与算法第八天【冒泡排序】

1.排序算法的稳定性

稳定排序算法会让原本有相同键值的记录维持相对次序

例如:对以下元组按照元组的第一个元素升序排列,元组如下:

(4,1) (3,1) (3,7) (5,6)

若要满足条件,则可能的排序有:

情况一:

(3,1) (3,7) (4,1) (5,6)

情况二:

(3,7) (3,1) (4,1) (5,6)

虽然情况一和情况二都是满足条件的,但是情况二在满足条件下打破了原本无需改变的顺序

2.冒泡排序的原理

python数据结构与算法第八天【冒泡排序】

3.代码实现

def bubble_sort(alist):
    for j in range(len(alist)-1,0,-1):
        # j表示每次遍历需要比较的次数,是逐渐减小的
        for i in range(j):
            if alist[i] > alist[i+1]:
                alist[i], alist[i+1] = alist[i+1], alist[i]

li = [54,26,93,17,77,31,44,55,20]
bubble_sort(li)
print(li)

4.时间复杂度

最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)

最坏时间复杂度:O(n2)

稳定性:稳定