一句话说,冒泡排序,就是 两两比较然后最大的后移,最终形成一个有序的数列,从整个流程看就像泡泡往上冒,所以叫做冒泡排序
def bubble_sort(array):
if len(array)<2:
return array
else:
n = len(array)
for i in range(0,n-1):
for j in range(0,n-1-i):
if array[i]>array[i+1]:
array[i],array[i+1]=array[i+1],array[i]
return array
两个的最坏情况时间复杂度都是O(n平方),但是,在部分有序的情况下,第二个的效率更高
例如:
[10 ,11,15,19,20,21]
第一组代码需要两次循环完全遍历
但是第二组自需要进行一次循环便可
优化版
def bubble_sort(array):
if len(array) < 2:
return array
else:
change = True
n = len(array)
while n>1 & change:
change = False
for i in range(0,n-1):
if array[i]>array[i+1]:
array[i],array[i+1]=array[i+1],array[i]
change =True
n-=1
return array