python:排序算法——冒泡排序

python:排序算法——冒泡排序


1、什么是冒泡排序

​ 所谓冒泡排序就是:将一个数列中的数字两两之间进行比较,如果第一个元素大于或小于第二个元素,那么就将两个元素位置交换,然后这个小或大值再往下两两比较,使最大或最小值慢慢浮到数列的最顶端,这样的排序算法我们称之为冒泡排序。

2、工作原理

​ (1)首先要获取一个数列,或者说一个容器,那么len(容器) >= 2,否则我想排序就没有意义

​ (2)你要对一个数列中的数字元素进行排序,然后两两之间要进行比较。因为是两两之间进行比较,那么最后比较的次数就应当为 len(list) -1 次,那么这个外循环的作用就是设置比较的次数

​ (3)接下来必须要有一个内循环,那么这个内循环就是操控元素之间比较的(通过索引取值比较),并且内循环比较完就要拿到一个极端值(即最大最小值),拿到以后我们就不能动这个元素了,接下来只比较剩下的元素,那么内循环的次数就应为 len(list) -1 - i(外循环的值)。

​ (4)通过内循环,我们可以拿到每一次的索引,并且拿到每一次的索引,我们要与下一个索引的值作比较,并且根据降序或者升序(即大于等于号)做出判断。

​ (5)当判断结果成立,那么我们就要将相邻的两个元素做交换,最终使得每次的极端值浮出水面

​ (6)最终我们不必返回该列表,因为我们已经交换了位置,也就是已经排好了序

3、示例(升序排列)

def sort(list):
    # 当列表的长度大于2排序才有意义
    if len(list) > 2:
        # 外循环的次数为列表中元素两两比较的次数
        for time in range(len(list) - 1):
            # 由于每次比较完都会将最大元素放置到最后,那么排好序的元素就不能动,只能动前边没有排好的
            # 索引每次必须减去外循环遍历的值
            for index in range(len(list) - 1 - time):
                # 当第一个元素大于它后边的元素
                if list[index] > list[index + 1]:
                    # 那么就交换位置
                    list[index], list[index + 1] = list[index + 1], list[index]
    else:
        print("列表中元素长度不足以排序")


if __name__ == '__main__':
    mylist = [34, 565, 21332, 8979, 2344, 8989, 1]
    sort(mylist)
    print(mylist)

运行结果:

[1, 34, 565, 2344, 8979, 8989, 21332]

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

御弟謌謌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值