算法一看就懂之「 冒泡排序 」

2019-10-23  本文已影响0人  不止思考

上一篇文章「 排序算法 」已经整体的把排序算法的分类和评估方法介绍了一下,今天起咱们就开始依次介绍一下各种排序算法的原理和特性。咱们就从最容易理解的「 冒泡排序 」开始吧。

一、「 冒泡排序 」是什么?

冒泡排序是一种交换排序,它的思路就是在待排序的数据中,两两比较相邻元素的大小,看是否满足大小顺序的要求,如果满足则不动,如果不满足则让它们互换。然后继续与下一个相邻元素的比较,一直到一次遍历完成。一次遍历的过程就被成为一次冒泡,一次冒泡的结束至少会让一个元素移动到了正确的位置。所以要想让所有元素都排序好,一次冒泡还不行,我们得重复N次去冒泡,这样最终就完成了N个数据的排序过程。

通过上面的描述,可以看出来冒泡排序在代码实现层面不就是两层循环嘛,哈哈。

下面举例:

如图,这是针对数组:5,1,4,2,8 采用冒泡排序进行从小到大的排列,上图中分别进行了三次冒泡后完成了整个排序过程。

先看第一次冒泡:

  1. 从数组的第0位开始,比较5和1,发现5>1,交换位置,交换后数组为:1,5,4,2,8

  2. 继续下一个元素的比较,比较5和4,发现5>4,交换位置,交换后数组为:1,4,5,2,8

  3. 继续下一个元素的比较,比较5和2,发现5>2,交换位置,交换后数组为:1,4,2,5,8

  4. 继续下一个元素的比较,比较5和8,发现5<8,不用交换,数组保持不变:1,4,2,5,8

  5. 继续下一个元素的比较,发现没有元素了,不用比较了,数组在第一轮冒泡排序后的最终状态就是:1,4,2,5,8 了,此时 元素 8 已经到了正确的位置,其它元素位置还是不对,需要循环进行下一轮冒泡。

第二次冒泡和第三次冒泡的原理与第一次冒泡一样,这里就不描述了,直接看上图,图中有清晰的流程标注。

我们在写冒泡排序的时候,有两个事项需要注意:

二、「 冒泡排序 」的性能怎么样?

我们按照前一篇文章讲到的排序算法评估方法来对「 冒泡排序 」进行一下评估:

以上,就是对数据结构中「 冒泡排序 」的一些思考,您有什么疑问吗?

码字不易啊,喜欢的话不妨转发朋友,或点击文章右下角的“在看”吧。😊

本文原创发布于微信公众号「 不止思考 」,欢迎关注。涉及 思维认知、个人成长、架构、大数据、Web技术 等。 

上一篇下一篇

猜你喜欢

热点阅读