博舍

冒泡排序——《图解算法》 冒泡算法ns图

冒泡排序——《图解算法》

文章目录冒泡排序的原理一、图解分析二、代码实现三、冒泡排序算法的优化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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇