歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言之起泡排序法總結

代碼學習過程中總結一下起泡排序法。

起泡排序法的基本思路:每次將相鄰的兩個數進行比較,將小的調到前頭。
若有6個數:9,8,5,4,2,0
第一次先將最前面的兩個數8和9對調,第二次將第二個和第三個數(9和5對調)……如此一共進行五次,得到8,5,4,2,0,9的順序。

可以看到,大數已沉底,而小數上升。最小的數0已向上浮起一個位置,經過一次比較已經得到最大的數9。

然後進行第二趟比較,對余下的五個數進行新一次的比較。(8,5,4,2,0)進行新一輪的比較,以便使第二大的數沉底。按以上方法進行第二次比較。得到第二大的數8。

按此規律,可以推知,對六個數要比較五次,才能使六個數按大小順序排列。
第一趟要比較5次,第二趟比較4次……第五趟比較1次。
規律:如果有n個數,則要進行n-1次比較。在第一趟比較中藥進行n-1次兩兩比較,在第j趟比較中要進行n-j次兩兩比較。
我將起泡排序寫成函數

#include<stdio.h>
/*==========================================================
 *函數名稱:main()
 *功    能:主函數
 *入口參數:
 *出口參數:
 *說    明:使用起泡法將給定的數組排序
 *==========================================================*/
void main()
{
    void qipao_paixu(int num[]);
    int a[10]={655,23,56,2345,3897,36,478,31,90,208};
    int i;
    printf("原始序列:");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
    printf("\n");
    printf("起泡法排序\n");
    qipao_paixu(a);
    printf("排序後的序列:");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
 
}
/*==========================================================
 *函數名稱:qipao_paixu()
 *功    能:起泡排序
 *入口參數:
 *出口參數:
 *說    明:對數組中的十個元素進行起泡排序
 *==========================================================*/
void qipao_paixu(int num[])
{
    int i,j,temp;
    for(j=0;j<9;j++)//控制j趟比較
        for(i=0;i<9-j;i++)//第j趟中,控制n-j次兩兩比較
        {
            if(num[i]>num[i+1])//判斷序列中兩兩相鄰數字大小
            {
                temp=num[i];//小數向前放,大數沉底
                num[i]=num[i+1];
                num[i+1]=temp;
            }
 
        }
 
}

經codeblock編譯運行

新手小白,還望多指正,以後常總結交流。

Copyright © Linux教程網 All Rights Reserved