11.28-学习笔记
设置flag在一定程度上优化了冒泡排序
#实现冒泡排序
#冒泡排序就是相邻两个数比较,大的后移,然后一轮过去后,大的会在最后一个位置
def bubble_sort(list):
for i in range(0,len(list)):#轮数
flag=False
for j in range(0,len(list)-i-1):#每轮的次数
if(list[j]>list[j+1]):#在这里可以进行优化,实际上在后面几次中就已经有序了,但是还会进行排序。
temp=list[j]
list[j]=list[j+1]
list[j+1]=temp
flag=True
if(flag==False):
break
print("第%s轮"%{i+1},list)
if __name__ == '__main__':
list=[]
for i in range(10):
list.append(int(input('请输入你想排序的数字:')))
bubble_sort(list)
未设置flag运行截图
设置flag后
二、快速排序
# 快速排序
def quicksort(list):
if len(list) <= 1:
return list
mid = list[len(list)//2]#把中点当做基准
left =[]#定义一个left空列表
right = []#定义一个right空列表
list.remove(mid)#移除中间结点
for item in list:#这里实际就是分区(实现了右边的数大于基准,左边的数小于基准)
if item >= mid:
right.append(item)#大于mid值的放在right里面
else:
left.append(item)#小于mid值的放在left里面
return quicksort(left) + [mid] + quicksort(right)#递归
if __name__ == '__main__':
list=[1,5,3,6,7,10,9]
print(quicksort(list))