冒泡排序是一个简单的排序算法,它通过循环不断的比较和交换相邻的元素,直到所有元素有序。最好的情况是当数组已经有序时,时间复杂度是O(N),最坏的情况是当数组是反序时,时间复杂度是O(N^2),平均时间复杂度是O(N^2)。
算法的主要思路是
比如数组[4, 2, 1, 3, 7, 6, 5]
冒泡排序过程如下
从上面的演示可以看出冒泡排序可能在没有执行完所有比较交换就已经有序了,所以可以进行优化,但一轮完成之后发现没有交换过,则说明数组已经有序,完成排序,冒泡排序算法未优化版和优化版实现如下。
冒泡排序相对于快速排序、归并排序等算法效率比较低,但是实现比较简单,如果对于算法效率要求不高,或者规模很小的数据可以使用冒泡排序。