前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新萌学Python之 冒泡算法排序

新萌学Python之 冒泡算法排序

原创
作者头像
Bobby_Y
修改2019-08-19 17:16:59
5350
修改2019-08-19 17:16:59
举报
文章被收录于专栏:Python_base

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

Bubble
Bubble

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

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

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

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

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

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

而今天谈的冒泡算法排序

原理:

是一个简单的排序算法,它重复地遍历要排序的数列,依次比较两个元素,如果前者比后者大就进行交换操作.遍历数列的循环进行直接没有再需要交换,这数列已经排序完成.算法因为越小的元素会经过交换操作慢慢浮出到数量的顶端所以得名冒泡算法.

demo如 图1 下:

图1
图1

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

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

图1.1
图1.1

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

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

优化1
图2.1
图2.1

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

图2.2
图2.2

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

        我们还可以试试下面 图3 demo. 又称鸡尾酒排序(双向冒泡算法)

鸡尾酒排序
鸡尾酒排序

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理:
    • 优化1
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档