|
冒泡法排序的思路是:将相邻的两个数比较,将小的调到前头。
如若有以下6个数:9 8 4 2 3 1,第一次将9和8对调,第二次将第2和第3个数(9和4)对调.........如此共进行5次,得到8-4-2-3-1-9的顺
序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较。经过4次比较,得到次大的数8。如此进行下去。可以推知,对6个数要比较5趟,才能使6个数按大小顺序排列。在第一趟中要进行两个数之间的比较共5次,在第二趟中比4次..........第5趟比1次。
如果有n个数,则要进行n-1 趟比较。在第一趟比较中要进行 n-1 次两两比较,在第k趟比较中要进行n-1-k次两两比较。
程序如下:
#define NUM 6
uchar buf[NUM]={9,8,4,2,3,1};
for(i=0;i<NUM-1;i++)
{
for(j=0;j<NUM-i-1;j++)
{
if(buf[j]>buf[j+1])
{
temp=buf[j];
buf[j]=buf[j+1];
buf[j+1]=temp;
}
}
}
|
|