def bubble_sort(li):
for i in range(len(li) - 1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(li) - i - 1): # j为列表下标
if li[j] > li[j + 1]:
li[j], li[j + 1] = li[j + 1], li[j]
return print(li)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
一趟排序完成后, 则无序区减少一个数,有序区增加一个数
什么时候最快?
当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊)。 时间复杂度: O(N)
什么时候最慢?
当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗)。 时间复杂度: O(N*2)
个人理解话述:
2层循环,第一层循环负责设置冒泡排序进行的次数,第二层循环列表的下标,判断如果第一个数字大于第二个数字,那么交换这两个值得位置。