Linux下實現冒泡排序

排序思想:比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。每次排序後,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後一個。

排序過程:

原序列            9 8 7 6 5 43 2 1

第一次排序後     8 7 6 5 4 3 2 1 9

第二次排序後     7 6 5 4 3 2 1 8 9

第三次排序後     6 5 4 3 2 1 7 8 9

.........                  ..............................

C語言實現,源碼如下:

#include<stdio.h>

#include<stdlib.h>

int main()

{    int NUM;

       scanf("%d",&NUM);

       int *a=     (int *)malloc(NUM*sizeof(int));

       int i,j,k;

       printf("enter%d numbers:",NUM);

       for(i=0;i<NUM;i++)

              scanf("%d",&a[i]);

       printf("\n");

       for(j=0;j<NUM-1;j++)

              for(i=0;i<NUM-1-j;i++)

                       if(a[i]>a[i+1])

                       { k=a[i];

                        a[i]=a[i+1];

                        a[i+1]=k;

                       }

    printf("theresult is:\n");

       for(i=0;i<NUM;i++)

              printf("%6d",a[i]);

       printf("\n");

       free(a);

       system("pause");

       return 0;} 

Vim編輯器下代碼截圖如下:


GCC編譯、運行效果如下圖:



(每天一點小收穫,感覺距離Linus Torvalds大神又近了一步!)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章