算法子目录:https://blog.csdn.net/qq_41106844/article/details/105553931
分析图
冒泡排序的思路
比对列表里面所有相邻的两个数,如果前面的数大于后面的数,就交换他们,比对的次数多了,大的数肯定会逐渐往后,小的数不断往前。
这就和上体育课时的列队,老师让自己调整大小个,肯定大个子的会自觉往后,小个子会被挤到前面来。
有序区与无序区
冒泡排序中有有序区与无序区的概念,有序区是在不断的比对中,不断放置大小规律确定的元素的地方。
无序区就是我们大小规律不确定的地方。
稳定排序与不稳定排序
例子
稳定排序就是排序中相同的项的位置相对不动。
不稳定排序就是排序中相同的项的位置按照某种规律进行了改动。
代码
from A.cat_time import cal_time
import random
@cal_time
def bubble_sort(li):
for i in range(len(li)-1):
for j in range(len(li)-i-1):
if li[j] > li[j+1]:
li[j],li[j+1] = li[j+1],li[j]
return li
li = list(range(10000))
random.shuffle(li)
bubble_sort(li)
因为有个两个for循环 复杂度为O(n2)。