冒泡排序
思想:每次比较相邻两个元素,如果它们的顺序错误,就对换它们的位置。
每一趟只能将一个元素归位,如果有n个元素需要进行排序,则需要将n-1个元素进行归位,即进行(n-1)躺操作,已经归位的不再比较。
最优时间复杂度:O(n) 【表示便利一次没有发现任何可以交换的元素,排序结束】
最坏时间复杂度:O(n*n)
稳定性:稳定
代码:
def bubble_sort(alist):
n=len(alist)
for i in range(n-1): #进行n-1躺排序
count=0
for j in range(n-1-i): #已经归位的不再进行比较
if alist[j]>alist[j+1]:
alist[j],alist[j+1]=alist[j+1],alist[j]
count+=1
if count==0: #最优情况
return