面试必考算法题之冒泡排序 (优化脱坑版)!
Posted 柠檬班软件测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试必考算法题之冒泡排序 (优化脱坑版)!相关的知识,希望对你有一定的参考价值。
冒泡排序原理
冒泡的规则:
◆ 每一轮获取第一个数和后面的数据进行依次比较的过程,称为一轮冒泡的过程
◆ 每一轮冒泡.都是先拿第一个数,依次比对相邻的两个数,如果前一个数比后一个数大,则交换他们的位置,这一轮比较完毕,会把最大的数放在最后面。
◆ 然后反复重复上面的步骤(每一轮都能将前面数据中一个最大数,放到后面),直到一轮冒泡下来没有任何数据需交互位置,此时数据已经为有序状态
冒泡的次数:
每次冒泡比较的次数:
根据以上分析我们找出了冒泡次数和,比较次数的关系,接下来就可以通过代码来实现了,实现代码如下
Python实现冒泡排序
代码实现:
注意:上面的代码根据冒泡的思路,实现了排序,但是从严格意义上讲还是由缺陷的,不能算是真正的冒泡排序,只是一个伪冒泡排序。
面试能够把这个伪冒泡排序写出来,大多数公司还是能过的。
代码优化
2、代码优化
代码解释:上述代码对之前的伪冒泡进行了优化,主要优化的点在于,我们每一次冒泡的时候,设置一个变量来记录,当前这次冒泡数据的顺序是否有发生改变,初始值设为False,当数据属性发生改变时,就把这个值设为True。
一轮冒泡结束后 再去判断,这个变量是否为False,如果为False则没有发生改变,即数据有序,那么接下来就可以直接返回数据,不需要再进行下一次冒泡。
提示:看完文章的小伙伴,以后面试遇到手撕冒泡排序的时候不要再写伪冒泡啦!
本文由柠檬班木森老师原创,转载需注明出处!
领取100G测试资料
让软件测试学习变得更简单!
以上是关于面试必考算法题之冒泡排序 (优化脱坑版)!的主要内容,如果未能解决你的问题,请参考以下文章