冒泡排序
原理
和相邻的两个数值进行比较,第二个比第一个大,(他们直接就交换顺序,一直比到最后一个数)
列表:a=[1,8,7,5,3]
第一轮比较:
第二轮比较
第三轮比较:
第四轮比较
得出结论:
程序的实现
def bubble_sort(alist):
"""冒泡排序"""
n = len(alist) #元素个数
for j in range(n-1): #外层轮询的次数
count = 0 #对内循环中第一次排序的时候检测,是否为顺序结构如[1,2,3,4]
for i in range(0,n-1-j): #内存循环次数
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1] ,alist[i] #交换位置
count += 1 #交换了位置加1,没有则不添加
if 0 == count: #表示数据没有交换位置,本省就是排序好的
return
时间最坏复杂读为O(n^2) :当列表之值为[3,2,1,6,5,4]
最优时间复杂读为O(n):当列表之值为[1,2,3,4,5,6]
**稳定性:**当列表里的值为[1,2,2,4,5]
里面有重复的值进行,冒泡排序的时候,位置是不交换的