|
冒泡法排序的思路是:將相鄰的兩個數(shù)比較,將小的調到前頭。
如若有以下6個數(shù):9 8 4 2 3 1,第一次將9和8對調,第二次將第2和第3個數(shù)(9和4)對調.........如此共進行5次,得到8-4-2-3-1-9的順
序,可以看到:最大的數(shù)9已“沉底”,成為最下面一個數(shù),而小的數(shù)“上升”。最小的數(shù)0已向上“浮起”一個位置。經第一趟(共5次)后,已得到最大的數(shù)。然后進行第二趟比較,對余下的前面5個數(shù)按上法進行比較。經過4次比較,得到次大的數(shù)8。如此進行下去?梢酝浦,對6個數(shù)要比較5趟,才能使6個數(shù)按大小順序排列。在第一趟中要進行兩個數(shù)之間的比較共5次,在第二趟中比4次..........第5趟比1次。
如果有n個數(shù),則要進行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;
}
}
}
|
|