面试必考算法题之冒泡排序 (优化脱坑版)
近期很多童鞋在讨论大厂面试的算法题,有部分同学表示一脸懵逼,不知从何下手,还有一部分同学直接网上复制的。比如网上复制冒泡排序算法,一不小心就复制了一个伪冒泡排序。写完了之后面试官问能优化嘛? 这个时候基本上都是一脸迷茫,不知道如何...
冒泡排序原理
冒泡的规则:
◆ 每一轮获取第一个数和后面的数据进行依次比较的过程,称为一轮冒泡的过程
◆ 每一轮冒泡.都是先拿第一个数,依次比对相邻的两个数,如果前一个数比后一个数大,则交换他们的位置,这一轮比较完毕,会把最大的数放在最后面。
◆ 然后反复重复上面的步骤(每一轮都能将前面数据中一个最大数,放到后面),直到一轮冒泡下来没有任何数据需交互位置,此时数据已经为有序状态
冒泡的次数:
每次冒泡比较的次数:
根据以上分析我们找出了冒泡次数和,比较次数的关系,接下来就可以通过代码来实现了,实现代码如下
Python实现冒泡排序
代码实现:
注意:上面的代码根据冒泡的思路,实现了排序,但是从严格意义上讲还是由缺陷的,不能算是真正的冒泡排序,只是一个伪冒泡排序。
面试能够把这个伪冒泡排序写出来,大多数公司还是能过的。
代码优化
2、代码优化
代码解释:上述代码对之前的伪冒泡进行了优化,主要优化的点在于,我们每一次冒泡的时候,设置一个变量来记录,当前这次冒泡数据的顺序是否有发生改变,初始值设为False,当数据属性发生改变时,就把这个值设为True。
一轮冒泡结束后 再去判断,这个变量是否为False,如果为False则没有发生改变,即数据有序,那么接下来就可以直接返回数据,不需要再进行下一次冒泡。
提示:看完文章的小伙伴,以后面试遇到手撕冒泡排序的时候不要再写伪冒泡啦!
本文由柠檬班木森老师原创,转载需注明出处!