熬夜喝了一瓶冰可乐,突然想到的冒泡排序算法安排

冒泡排序:
  • 通俗解释就是:定义从小到大排列,比较相邻的数字,如果第一个比第二个大,就交换他们两个,如果如果第一个比第二个小,就不动第一个,继续从第二个开始比较。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

排序方式

遍历列表并比较相邻的元素对,如果元素顺序错误,则交换它们。重复遍历列表未排序部分的元素,直到完成列表排序

时间复杂度

因为冒泡排序重复地通过列表的未排序部分,所以它具有最坏的情况复杂度 O ( n 2 ) O(n^2) O(n2)

如图展示的意思,比较相邻的数字,它会进行好多次比较,直至排序完成
在这里插入图片描述
代码编写:

# 定义数组
li = [3, 8, 2, 5, 1, 4, 6, 7]


def bubble_sort(li):
    # 第2步,如果不知道循环几次,则举几个示例来判断
    # 控制循环的次数,因为下面循环是比较数字,那不可能排序一次就拍好了,所以要循环重复下面的步骤
    for j in range(0, len(li) - 1):
        # 第1步,这个代码为一次循环比对,这段代码一定一直循环,一直比对多次至排序完成
        # 我们要定义指针下标,用下标代表数字进行比较,从0开始,再上一次的循环基础上进行排序,
        for i in range(0, len(li) - j - 1):
        # 用前一个跟后面的对比,如果前一个大于后面的一个,就进行换位置
            if li[i] > li[i + 1]:
                # 此为python特有的数字换位写法
                li[i], li[i + 1] = li[i + 1], li[i]
    return li


print(bubble_sort(li))

评论 96
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨旭华 

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

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

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

打赏作者

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

抵扣说明:

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

余额充值