排序方法是C語言中一種重要的搁进、基本的算法浪感。一共有兩種規(guī)律:升序和降序。升序是將數(shù)據(jù)從小到大排列饼问,而降序是將數(shù)據(jù)從大到小排列影兽。今天,我們來講解排序方法中的冒泡排序法莱革。我們知道峻堰,當燒開水時,燒開前氣泡由大變小,燒開后,氣泡由小變大。而我們的冒泡排序法也與之類似盅视。
比如捐名,有4個數(shù)字:{10、6闹击、3镶蹋、9},要求升序排列。
##第一輪
####第一步贺归,將{10淆两、6、3牧氮、9}中10與6進行比較琼腔,10>6,將10與6互換踱葛,得到{6丹莲、10、3尸诽、9}甥材。10這個比6大的數(shù)向后移相當于氣泡上升過程中變大。
####第二步性含,將{6洲赵、10、3商蕴、9}中10與3進行比較叠萍,10>3,將10與3互換绪商,得到{6、3格郁、10腹殿、9}。
####第三步例书,將{6锣尉、3、10决采、9}中的10與9進行比較自沧,10>9,將10與9互換树瞭,得到{6暂幼、3、9移迫、10}旺嬉。
##第一輪結束,從{10厨埋、6邪媳、3、9}中找出最大值10。10在最后位置雨效,不再變動迅涮。
##第二輪
####第一步,將{6徽龟、3叮姑、9}中的6與3比較,6>3据悔,將6與3互換传透,得到{3、6极颓、9}朱盐。
####第二步,將{6菠隆、3兵琳、9}中的6與9比較,6<9骇径,將6與9不互換躯肌,得到{3、6破衔、9}清女。
##第二輪結束,從{6运敢、3校仑、9}中找出最大值9忠售。9在最后位置传惠,不再變動。
##第三輪
####第一步稻扬,將{3卦方、6}中3與6比較,3<6泰佳,將3與6不互換盼砍,得到{3、6}逝她。
##第三輪結束浇坐,從{3、6}中找出最大值6黔宛。6在最后位置近刘,不再變動。
從上面可以知道,4個數(shù)需要比較3輪觉渴,每輪次數(shù)遞減介劫。類比可知,n個數(shù)需要比較(n-1)輪案淋,每輪次數(shù)遞減座韵。降序排序與上述過程相似,這里就不過多地贅述了踢京。
下面用一個程序來說明誉碴。
##程序:
#include
int main()
{
int a[4];
int i,j,t;
printf("請輸入4個整數(shù):\n");
for (i=0;i<4;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("從小到大排列為:\n");
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
##結果:
冒泡排序法是排序法中的一個重要的分支,一定要重點掌握漱挚。