漫谈排序算法——冒泡排序

156 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

前言

在我们的日常开发中,肯定会涉及到数据的排序处理,一般来说,我们都会调用语言内部的排序接口进行排序,但是在进行有涉及到特殊业务处理的排序时,就需要我们自己来进行处理了,或者是像现在主流的大数据框架,都是依靠着大数据量的排序的完成时间来衡量其数据处理的性能指标的。所以排序对于我们来说是非常重要的,那么今天我们就来了解一个最简单的排序——冒泡排序。

排序算法冒泡排序

冒泡排序顾名思义就是整个排序的过程会像气泡冒出一样,一层一层的往上走,所以每次冒泡操作都只会比较相邻的两个元素,看是否满足大小的关系,如果不满足的话,会进行元素的位置互换。进行重复n次比较,就完成了n个数据的排序。但是大家是否注意到了,普通的冒泡排序存在一个缺点,假如我的数据已经是有序的状态了,那么进行n次比较,每次比较都是不会涉及到数据的位置变化的。所以我们就可以在冒泡排序进行优化,判断这一轮的冒泡操作是否有发生数据的交换操作。如果已经没有数据的交换操作了,这时候代表数据已经是有序的了。可以结束冒泡排序了。因为冒泡排序没有涉及到额外的空间操作,所以它是一个原地算法,最好的时间复杂度是O(n),数据提前有序的。而最坏的时间复杂度则是O(n^2)。

总结

冒泡排序虽然非常简单,但是在一些特殊的场景下,它的排序速度比一些高级的排序算法的速度快很多。所以学习了解基础算法是非常重要的。