每次提到冒泡排序总会有人问我:冒泡排序是个啥呀,它为啥叫冒泡排序啊。

不得不说,很多人都听过冒泡排序,但是你了解它是什么样的算法吗?

之前我有写过一篇桶排序的博文,里面介绍了简单的桶排序的原理,虽然桶排序简单好用,但是我们知道,如果我们需要比较的元素有N个,我们就需要申请N+1个空间来存储它,这对于我们的空间十分的浪费。所以,人们又发现了一种新的排序方法,那就是冒泡排序。

冒泡排序的基本思想是:比较相邻两个元素的大小,如果顺序错误就将他们的位置进行交换;

我们再来举个栗子:

现在我们有一组数字2 5 9 3 12 7 6 10,我们来对这组数字进行冒泡排序:(下面是一次冒泡排序的过程)(画了好半天,好想吐槽一下自己连画图板都不会用了 )

下面,我们试着用C语言来实现我们的冒泡排序:

#include
#include
int main(){ int b[] = { 5, 2, 8, 9, 1 }; int n = 5; int i = 0; int j = 0; for (i =0; i 
b[j + 1]) { int  t = b[j]; b[j] = b[j +1]; b[j +1] = t; } } } for (i = 0; i < 5; i++) { printf("%d ", b[i]); } system("pause"); return 0;}

上述程序实现了我们的冒泡排序算法,大家可以自己试试哦~

冒泡排序的精髓在于他的循环嵌套以及嵌套的循环的判断条件,不难看出 冒泡排序的时间复杂度是O(N^2),这是一个非常高的时间复杂度!

虽然冒泡排序的效率十分低,但对于初学者来说一定要学会它的思想和技巧!