新萌学python之冒泡算法一些浅见!

        忆往昔,我在初入it江湖时,头一次interview时被问一个问题就是冒泡算法排序手写,一开始是懵的,为什么呢,因为刚从学校毕业,实习期面试,因为本科学的是信息管理,半路出家,对编程产生兴趣,从大二试着自己学学,那时候网上找入门,那时候玩心重,c是真学不进去,java相继无缘,误打误撞,用python写出大多数前辈都经历过的事,'hello python',执行后弹出的输出,那时候就跟在沙滩晒太阳,一个美女突然叫你给她后背摸防晒霜一般!. ... .. .跑题了,为什么决定开始写一些学习中的记录呢,以后老了,给孙子吹啊!开个玩笑,其实就是想多学习,不足之处,希望各位前辈斧正,

Bubble

Python中自带有排序函数sort和sorted两种方法:

sort()是python中list自带的排序方法,直接list.sort()调用既可,直接原列表排序,不返还新列表;

sorted()是python内置的全局方法来对可迭代的序列排序生成新的序列.即需要参数接收.

两个方法都有两个参数(key, reverse)

key:key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较

reverse:是否倒序排序,true or false

而今天谈的冒泡算法排序demo如 图1 下:

 

图1

        其原理就是通过列表中的元素两两比较,大的就右移,代码通过2层循环,外层循环决定排序的列表要循环几次,

        而内层循环是每一次外循环,会把列表按大到小的顺序的依次把元素大的移动到最右边,

 

图1.1

        图1.1这是代码执行的过程,^3^

        但是冒泡算法有些缺点,比如一个列表[1, 2, 3, 5, 4]就最后两个元素需要排序,但是上面的代码还是会从头到尾循环一遍!

优化1

 

图2.1

        图2.1,优化1中,给外层for循环加 a 标记初始值Flase,如果内层有改动,改变a=True,如果没有改动,内层循环结束后,执行if判断,a为初始值Flase,就是列表没有交换,那么就直接break循环即可.

 

图2.2

        图2.2 是对图2.1 中的代码进行优化,添加的功能是使排序正反都进行一遍在一次外循环中,这样是不是就提高了工作效率了哈!

        我们还可以试试下面 图3 demo.

让排序一次循环,可以相对左右各排一次,相对基础的冒泡算法来说,对于大量数据的排序来说,可以节省了时间,虽然我两次程序执行时间都是0.1s, 毕竟是小数据嘛!!! @_@

感谢各位的观看!!!小弟在此谢过,欢迎各位大佬斧正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值