冒泡排序的优化(python)

1、遇到的情况:对于s = [5, 1, 2, 3, 4]这个列表而言,只执行一次循环即可实现排序,如果继续循环,就是1与2、3、 4进行排序,很浪费时间,所以没必要。
2、解决办法:
增加标示为flag,如果flag为True则表示还要继续排序,否则直接输出。
3、代码

# coding: utf-8;


def bubble_sort(b):
    n = len(b)
    """第一个循环设置冒泡排序的次数,如果有n个数,那么需要将n-1个数
   进行归位;
   其中flag是标志位,如果任意位置的相邻的两个数之间不用交换位置,
    则flag = False,那么直接
    输出,因为已经排好序了"""
    for i in range(0, n-1):
        flag = False
        for j in range(0, n-1-i):
            if b[j] > b[j+1]:
                b[j], b[j+1] = b[j+1], b[j]
                flag = True
        if not flag:
            return b
    return b


a = [5, 2, 45, 6, 8, 2, 1]
print(bubble_sort(a))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值