冒泡排序:重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们的顺序交换过来。
最优的时间复杂度:O(n)
最坏的时间复杂度:O(n²)
是稳定排序
#冒泡排序:重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们的顺序交换过来。
def bubbleSort1(data):
#按升序排列列表里的数据
data = list(data)
print("排序前的数据:" + str(data))
for j in range(len(data)-1,0,-1):
for i in range(0,j):
if data[i] > data[i+1]:
data[i],data[i+1]=data[i+1],data[i]
print("升序排列的数据:" + str(data))
def bubbleSort2(data):
#冒泡排序的优化:当某次内存排序发现没有任何数据需要交换的时候可以提前退出程序
data = list(data)
print("排序前的数据:" + str(data))
isBreak = False
for j in range(len(data)-1,0,-1):
count= 0
if isBreak:
break
for i in range(0,j):
if data[i] > data[i+1]:
data[i],data[i+1]=data[i+1],data[i]
count+=1
if count == 0:
print("第" + str(len(data)-j) +"次冒泡之后可提前退出程序。")
isBreak = True
print("升序排列的数据:" + str(data))
data = [12,2,345,199,200]
bubbleSort1(data)
bubbleSort2(data)