打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于排序—冒泡排序

        关于列表数据的排序有很多,主要有冒泡排序、选择排序、插入排序、快速排序、堆排序及归并排序等等。对于平时的使用,数据量比较小的情况下,使用哪一种排序差别都不看,就看其稳定性选择其中的一种就可以了。

        排序要用到的必不可少的就是循环,这是一个比较让人不太好理解的抽象东西。关于单层循环的理解比较好容易一点,可以看成是变量对要处理的列表数据的标记,然后按照另外制定的条件进行选择性输出,这个比较简单。

        在平时的使用中,嵌套循环使用的机会还是比较多的,对于嵌套循环的理解似乎更难一些,主要的重点是抓住其外层循环与内层循环的变量范围,把握好变量的取值与循环过程中所遍历的标记对象,知道变量所指向的对象,这样在写条件判断的时候最后输出的时候才会指向正确。

        通过一张图片这样对照看起来似乎更容易理解一些,在没有其他条件下,对于外层循环每一个变量标记一次,内层循环对所有的元素进行一次标记。理解这些之后,对于加上需要的条件,那判断起来也是一样的,只是把符合要求的拿出来,不符合要求的自动过滤掉。

        理解了这些之后,对于几种排序来说相对就会好理解一些,只要在写函数或代码的时候抓住其中的变量,制定好相对的条件就可以了。

冒泡升排序

        冒泡升排序就是将一组杂乱的列表数据进行从小到大进行升序排列,之所以叫冒泡排序,是因为气泡在水中上升都是越来越大,所我们的升排序相类似,这样的叫法让人更容易理解一些吧。

        冒泡排序的思路主要是把一组数据相邻的二个元素进行比较,如果后面的数比前面的大,那就不做改动继续与后面相邻数进行比较,如果后面的数比前面的数小,那就交换位置,如此循环。这样循环一次结束后,肯定会找到一个最大的数放在最后,经过N-1循环后,那么列表所有的数据就会按升序的位置排列好。

        还是通过代码来实现看一下:

        如果对上面的循环理解了,对下面的代码理解起来就没什么问题了。就是写一下循环语句,然后对循环过程的变量进行判断大小,然后进行位置交换,外层的每一次循环,内层循环通过比较都会找出一个最大的数放在列表的后面,当外层循环完了,排列排序也就完成了。

        通过实例来分步看一下第一次循环的结果:

        这是对一个无序列表和一个随机列表的排列结果,然后来看看每一次的循环,列表的变化,这样对于理解循环和函数执行过程中发生了什么就更直观了。

        这样我们可以看到,当外层循环一次,内层循环经过一次比较后,都会找出一个最大的数放在最后,只列出一向项,对于参考和理解,我相信有这些就足够了。开始主要是理解好循环及嵌套循环过程,变量的取值及在循环过程中他们都做了什么,这样对于排序的理解就容易的多了。

        好了,今天对于冒泡排序就分享到这里,下次再分享其他几种排序方法,然后再做总结,看看各种排序之间的异同,找出异同,这样不管是对记忆和理解,还是以后的使用都会有很大帮助的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
小程序中实现二维数组的展示
PHP数据结构-交换排序:冒泡、快排(有彩蛋)
【Java案例】九九乘法表
数字黑洞(下):四位数的黑洞
Java排序算法之冒泡排序
python 循环高级用法 [expression for x in X [if condition] for y in Y [if condition] ... for n in N [if condition] ]按照从左至右的顺序,分别是外层循环到内层循环
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服