冒泡排序——《图解算法》
文章目录冒泡排序的原理一、图解分析二、代码实现三、冒泡排序算法的优化RocketMQ思维导图,不看会后悔哟Mysql思维导图分享上面思维导图可在gongzhonghao回复:扣扣号,获取联系方式后找我免费获得可编辑版本。后面会继续分享其他思维导图,包括Redis、JVM、并发编程、RocketMQ、RabbtiMQ、Kafka、spring、Zookeeper、Dubbo等等冒泡排序的原理从第一个数开始,依次往后比较,如果前面的数比后面的数大就交换,否则不作处理。这就类似烧开水时,壶底的水泡往上冒的过程。
冒泡排序分从大到小和从小到大两种排序方式。它们的唯一区别就是两个数交换的条件不同,从大到小排序是前面的数比后面的小的时候交换,而从小到大排序是前面的数比后面的数大的时候交换。我这里只说从小到大的排序方式。
一、图解分析现以数组[8,7,6,4,5]为例,我们通过将这个数组按从小到大的方式排序,来说明冒泡排序的过程。
第一次循环:此次循环的多次比较交换,使最大的数字8冒到最上面。
第二次循环:此次循环中的多次比较和交换,使7往上冒,最终排到倒数第二个位置。
你会发现,这次循环比前面少一次循环比较。
这是因为第一次循环时已经把最大的8排到最上面的位置了,这次排序肯定不会去占用最上面的位置的,所以此时比较次数可以比前面少一次。
第三次循环:同理,此时6会往上冒。比较次数同理又会比前面少一次。
此时看着最后的结果已经是从小到大了,这是因为在原始数组中,5就在4的上面。
但实际我们不知道5是在4的上面,我们就得继续完成最后一次循环比较。
第四次循环:5已经排在4的上面了,比较后不交换。
二、代码实现总结前面的图解,数组长度设为n。外层共循环了n-1次,外层循环增加一次,对应内层循环就减少一次。
外层循环为:for(inti=0;i