1. 程式人生 > >資料結構之氣泡排序

資料結構之氣泡排序

氣泡排序是一種極其簡單的排序演算法,也是我所學的第一個排序演算法。它重複地走訪過要排序的元素,依次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。這個演算法的名字由來是因為越小(或越大)的元素會經由交換慢慢“浮”到數列的頂端。

  氣泡排序演算法的運作如下:

  1. 比較相鄰的元素,如果前一個比後一個大,就把它們兩個調換位置。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
  5. 如下圖所示

 

程式碼如下:

 

  1. #include <stdio.h>
    void swip(int a[],int n)
    {
        int t;
    for(int i=0;i<n-1;i++)//n個數的數列總共掃描n-1次
    {
        for(int j=0;j<n-i-1;j++)//每一趟掃描到a[n-i-2]與a[n-i-1]比較為止結束
        {
            if(a[j]>a[j+1])//後一位數比前一位數小的話,就交換兩個數的位置(升序)
            {
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }
        }
    }
    }
    
    
    int main()
    {
        int i;
        int a[10]={36,26,16,46,96,86,76,56,66,106};//十個數的無序數列
       printf("排序後為:\n");
        swip(a,10);
        
        for(i=0;i<10;i++)
        {
            
            printf("%d ",a[i]);
        }
        return 0;
    }