前言:我在大一刚接触冒泡排序时被其表面迷惑,以为是一种很高端的排序算法。其实冒泡排序是一种非常容易理解也容易实现的排序算法。
描述:冒泡排序其本质是将相邻的元素进行对比(如果是从小到大排序),如果发现前面的元素大于后面的元素那么交换即可,直到最后。该算法一般使用两层循环来实现。
代码描述:
#include<stdio.h>
//冒泡排序
int main(){
int array[]={1,2,3,4,5,6,0};
int i;
int p;//用于交换两个数
for(i=0;i<7;i++){//第一层循环,循环7遍
int j;
for(j=0;j<6;j++){//核心代码
if(array[j]>array[j+1]){ //交换
p=array[j];
array[j]=array[j+1];
array[j+1]=p;
}
}
int t;
printf("\n");
for(t=0;t<7;t++)printf("%d\t",array[t]) ;
printf("\n");
}
return 0;
}
结果分析:从结果我们可以看出,最后面的元素0,每次循环向前一位,整个过程就像气泡一样向上冒。所以形象的称为冒泡排序。