冒泡排序python实现

名字来源:

大数(or小数)经由交换会慢慢浮到列表末尾,就像沸腾的泡泡一样,从锅底往上冒泡.

具体实现:

两两比较,每次比较完一趟后,趟数减少(因为第一个数or最后一个数确定了它的位置,排序过程它的位置都不会变化)



def bubble_sort_self(mylist):
    length = len(mylist)
    for i in range(length):  # 比较的趟数
        flag = True  # 可能当前序列是有序的
        for j in range(length - i - 1):  # 每趟哪些元素和哪些元素进行比较
            if mylist[j] < mylist[j + 1]:  # 值小的数每次都往最后挤兑
                mylist[j], mylist[j + 1] = mylist[j + 1], mylist[j]
                flag = False  # 一旦进入条件语句,那么当前是无序的
        if flag:  # 可能排到某个时候,就直接是有序的
            break
    return ''.join(mylist)


if __name__ == '__main__':
    mystr = 'ABDKKDF'
    mylist = list(mystr)
    print('Before sorting:', mystr)

    new_str = bubble_sort_self(mylist)
    print('After sorting:', new_str)


分析:

比较的次数,只弄到length-i-1的原因: 以i为0为例子,你只要排到length-2即可,因为最终我们会比较mylist[j](倒一)和mylist[j+1](倒二)的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值