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.冒泡排序的原理
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)
稳定性:稳定