python-实现冒泡排序和快速排序

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))
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜杜_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值