冒泡排序

学习数据结构与算法
2021-05-17 14:29 · 阅读时长5分钟
小课

冒泡排序是一个简单的排序算法,它通过循环不断的比较和交换相邻的元素,直到所有元素有序。最好的情况是当数组已经有序时,时间复杂度是O(N),最坏的情况是当数组是反序时,时间复杂度是O(N^2),平均时间复杂度是O(N^2)。

算法的主要思路是

  1. 从第一个元素开始,比较当前元素和下一个元素,如果当前元素大于下一个元素,则交换,否则不操作。
  2. 当操作结束后,最大的元素将被移动到数组末尾。
  3. 继续对前n-1个元素执行第1、2步,操作结束后,第二大的元素将被移动到数组倒数第二的位置。
  4. 继续对前n-2个元素执行第1、2步,操作结束后,第三大的元素将被移动到数组倒数第三的位置。
  5. ....
  6. 直到最小的元素被移动到数组第一个位置。

比如数组[4, 2, 1, 3, 7, 6, 5]冒泡排序过程如下

加载中...

从上面的演示可以看出冒泡排序可能在没有执行完所有比较交换就已经有序了,所以可以进行优化,但一轮完成之后发现没有交换过,则说明数组已经有序,完成排序,冒泡排序算法未优化版和优化版实现如下。

加载中...

冒泡排序相对于快速排序、归并排序等算法效率比较低,但是实现比较简单,如果对于算法效率要求不高,或者规模很小的数据可以使用冒泡排序。

排序算法冒泡排序