.

cc编程技巧十大十大排序算法

作者:学到牛牛龚晓潺

冒泡排序是相对于其他排序来说较简单的排序,也是入门级排序,在一个要排序的序列里面,从前往后进行多次扫描,每两个相邻的数据进行比对,小的放在前面,大的放在后面(升序),多次重复此操作,直到变成一个有序的序列,那它名字的冒泡是从何而来呢,其实就是每两个数据进行比对时,大的那个数因为交换就会像泡泡一样浮起来浮到顶端。

知道了冒泡排序的概念之后,我们再来仔细的看看它的每个步骤

首先,定义一个数组,先从前往后扫描一次,完成第一次的排序,我们最终要呈现一个升序的数组,所以排序的过程中就应该小的数放前面,大的数放后面。

如图1-1所示,定义两个变量(inti,intj),充当内外两层循环的变量,首先从下标为0的数开始(j=0),遍历完最后一个数结束第一次排序(jlen-i-1),

遍历的过程中相邻的两个数进行比较(a[j]a[j+1]),如果前一个数大于后一个数,则两个数交换位置(怎么交换?借助第三个数),如果前一个数小于后一个数,则位置不变,继续后面的相邻的数的比较,直到最后一个数进行比较后结束第一轮。

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

图1-1

(若出稿请在素材中更换此图,删除本句话)

如图1-2所示,我们开始第二轮的排序(i=1),继续相邻的数进行比较,重复第一轮排序的操作

图1-2

内层循环(j)继续相邻两个数的比较,当外层循环遍历到最后一个数(ilen),结束所有的排序,冒泡排序结束。

以上是冒泡排序的基本步骤,其实通过这些步骤可以看出来冒泡排序是思想比较简单的排序,既然简单肯定还是有很多考虑不周全的地方,所以冒泡排序也是所有排序中效率较低的排序,适合初学者使用。接下来我们看看冒泡排序怎么通过程序实现

#includestdio.h

intmain()

{

inta[5]={1,3,2,5,4};

intlen=5;

inti,j,temp;

for(i=0;ilen;i++)//外循环

{

for(j=0;jlen-i-1;j++)//内循环

{

if(a[j]a[j+1])//升序,保持前一个数小于后一个数的顺序

{

temp=a[j];//交换位置

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(i=0;ilen;i++)

{

for(j=0;jlen;j++);

printf(“a=%d\n”,a[j]);

}

}




转载请注明:http://www.abachildren.com/sstx/5280.html