Python | 有趣的冒泡排序

引言喝汽水的时候,汽水中常常有许多小小的气泡,哗啦哗啦飘到上面来。这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。而我们的冒泡排序之所以叫做冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。解决方案冒泡排序逻辑比较简单,易于理解。步骤大致如下:对存放原始数据的数组,按从前往后的方向进行多次扫描,每次扫描称为一趟。当发现相邻两个数据的次序与排序要求的大小次序不符合时,即将这两个数据进行互换。如果从小到大排序,这时,较小的数据就会逐个向前移动,好像气泡向上漂浮一样。生活中,我们在集体活动中站队时,第一次站队由于没有固定的位置,往往是大家先随便站成一排,然后再通过换位置的方式逐步形成高矮顺序,这就体现了冒泡排序的思想下面用画图来表示一下该过程:

通过观察我们不难发现,第一轮比较了4次,第二轮比较了3次,第三轮比较了2次,第四轮比较了1次。为什么每一轮相互比较的次数都减少了一次?因为在第一轮比较结束的时候,这一组数据中最大的数23已经下沉到最底,之后的每一轮比较的时候都不用再去比较23;第二轮比较结束的时候,次大的12也沉到了倒数第二的位置,跟23一样,在之后的每一轮比较中就不用再去比较12了。第三轮结束和第四轮结束的情况也是类似。由此我们可以发现冒泡排序的特点:冒泡排序把N个数通过N-1轮排序,升序排序时每一轮比较会把最大的数下沉到最底(降序排序则反之),所以相互比较的次数每一轮都会比前一轮少一次。下面我们用Python代码实现该算法:List = []lenth = len(List)for i in range(0,lenth):for j in range(i+1,lenth):if List[j] < List[i]:List[i] , List[j] = List[j] , List[i] #升序用>,降序用<return List实际使用该算法时我们会发现这样一个问题:由于每次比较没有记录,即使是一个完全有序的含有N个数的序列,程序也会运行N-1次。为了改善这种情况,我们可以通过标记flag来优化排序,当在双重循环还未循环完毕的时候,如果已经完成了排序,则通过标记flag达到结束的效果。代码如下:List = []lenth = len(List)for i in range(0,lenth):flag = 0for j in range(i+1,lenth):if List[j] < List[i]:List[i] , List[j] = List[j] , List[i] #升序用>,降序用<flag += 1if flag == 0:break结语本文简单介绍了一下冒泡排序的原理及优化方法。虽然该算法效率不高,但是每个算法都有合适的应用场景。实习编辑:李欣容稿件来源:深度学习与文旅应用实验室(DLETA)

(0)

相关推荐

  • 表格中灵活使用排序

    在Excle表格中,排序也是我们常常使用的功能.相信大家对于这个功能并不陌生,在使用的过程中我们还是要更多的了解排序功能. 在使用排序的时候,单列的排序我们可以通过菜单栏中的排序直接完成,有升序和降序 ...

  • Excel表格如何进行排序?

    Excel对于数据有时候会进行排序,不过排序也分为很多种类型,今天小编就来给大家讲解一个最简单的升序和降序吧! 1.我们打开一个小编随意做的表格数据进行演示,鼠标点击上方的--开始选项卡. 2.然后在 ...

  • Python中几种常见的排序算法?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • python笔记18-sort和sorted区别

    前言 python的排序有两个方法,一个是list对象的sort方法,另外一个是builtin函数里面sorted,主要区别: sort仅针对于list对象排序,无返回值, 会改变原来队列顺序 sor ...

  • 第 14 天:Python 高阶函数

    函数式编程现在逐渐被广大开发群体接受,越来越多的开发者们开始使用这种优雅的开发模式,而我们使用函数式编程最主要的是需要清楚: 什么是高阶函数(Higher-order Functions)? Pyth ...

  • Python|有趣的画图

    前言在学习python过程中代码写久了偶尔会感觉到枯燥,这时可以用一些简单的代码画一些有趣的图来调节一下.同时也可以激发对python的兴趣,发现原来代码还可以这样有趣.小编这里会写一些简单画图.问题 ...

  • 诚之和:Python怎么实现冒泡排序

    本篇内容主要讲解"Python怎么实现冒泡排序",感兴趣的朋友不妨来看看.本文介绍的方法操作简单快捷,实用性强.下面就让小编来带大家学习"Python怎么实现冒泡排序&q ...

  • 好玩又有趣的Python实例小游戏代码,我能在电脑上琢磨一天

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习资料 ...

  • Python处理图像五个有趣场景,很实用!

    好奇心Log 6天前 以下文章来源于Python大数据分析 ,作者有派君 Python大数据分析分享python编程.可视化设计.大数据分析.机器学习等技术以及数据分析案例,包括但不限于pandas. ...

  • 有趣且鲜为人知的 Python 特性,火了!

    小编最近逛Github发现了一个给力的Python项目,绝对能让你傻眼!可以通过这个项目测试你对Python的熟悉程度! 这个项目叫做 "What the f*ck Python! 

  • 有趣的Python图片制作,用QQ好友头像拼接出里昂

    在本文中,我们将实现两个功能: 将所有头像合并为大图 将所有头像以某个模板合成大图 同样,先给上所有运行效果图: 代码实现 1.代码所需库 import requests,codecs,re,urll ...

  • Python爬取某趣阁小说,有趣又实用

    上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 2. 向网站发送请求并获取网站数据 网站链接最后的一位数字为一 ...

  • 墙裂推荐!10个非常有趣的Python库!

    2021-09-05 以下文章来源于菜鸟学Python ,作者菜鸟哥 菜鸟学Python 已原创500+篇,从入门,进阶技巧,爬虫数据分析,数据可视化等,以及经验和技巧的总结,趣味原创文章,破解九宫格 ...

  • 看漫画学Python:有趣、有料、好玩、好用全彩电子pdf版

    看漫画学python封面 python是一门简单的编程语言,入门十分简单,语言本身是一种人类理解的语言风格. 不像C++ Java等晦涩难懂,本书有趣好玩,又是全彩色,内容丰富. python语言应用 ...