"""
冒泡排序法:
比较n-1趟,每一趟要比较n-2次
一共比较的步骤:(n-1)**2 ==冒泡排序的时间复杂度
最优时间复杂度:n-1 == o(n)
最坏时间复杂度为:(n-1)**2 == o(n**2)
下标为i: list[i],list[i+1] = list[i+1],list[i]-->(1,2) = (2,1)
"""
def bubble_sort(myList):
n=len(myList)
flag=True
for j in range(1,n): #表n-1趟
for i in range(0,n-j): #每一趟中元素相邻比较
if myList[i] < myList[i+1]:
myList[i],myList[i+1] = myList[i+1],myList[i]
flag=False
if flag:
break
def bubble_sort2(myList,last): #last每一趟比较的结束下标
if last<=0:
return
flag = True
for i in range(0,last):
if myList[i]>myList[i+1]:
myList[i],myList[i+1] = myList[i+1],myList[i]
flag=False
if flag:
return
else:
bubble_sort2(myList,last-1)
if __name__ == '__main__':
l = [89,23,11,99,10,34,56,8]
print(l)
# bubble_sort(l)
bubble_sort2(l,len(l)-1)
print(l)