排序之冒泡排序

冒泡排序

我们假设要将一列数从小到大排序:

1.我们首先指向最左边两个相邻的数

2.比较两个数的大小,如果左边的数大于右边的数,则交换两数位置,如果左边的数小于右边的数,则不变

3.接着向右移一格继续如上操作,当我们将“指针”移到最右边时,最大的数已经被“冒”到了最右边(就像冒泡一样)

4.接着,我们着指向最左边,重复将最大的数“冒”到最右边,直到排序完成

Python代码实现:

def bubble_sort(l):
    for i in range(len(l)):
        for j in range(len(l)-1):    # 因为后面交换时,涉及到l[j+1],所以此时要减1
            if l[j] > l[j + 1]:
                l[j], l[j + 1] = l[j + 1], l[j]
    return l

或者这样写:

def bubble_sort(l):
    flag = False  # 定义flag来表示是否已经排列好
    while not flag:
        flag = True
        for i in range(len(l) - 1):
            if l[i] > l[i + 1]:
                l[i], l[i + 1] = l[i + 1], l[i] 
                flag = False  # 若此条件判断成立,则并未排序好,将flag变为False
    return l

本文为自己学习时所写的小笔记,水平有限,内容仅供参考,如有错误,欢迎指正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值