排序思想:比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。每次排序後,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後一個。
排序過程:
原序列 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大神又近了一步!)