插入法排序的要領就是每讀入一個數立即插入到最終存放的數組中,每次插入都使得該數組有序。
上代碼:
#include#include #define n 10 int main() { int a[n]={-1,3,6,9,13,22,27,32,49}; /*注意留一個空間給待插數*/ int x,j,k; x = rand()%100; printf("隨機產生x的值為:%d\n",x); if(x>a[n-2]) { a[n-1]=x ; /*比最後一個數還大就往最後一個元素中存放*/ } else /*查找待插位置*/ { j=0; while( j<=n-2 && x>a[j]) { j++; } for(k=n-2; k>=j; k--) { /*從最後一個數開始直到待插位置上的數依次後移一位*/ a[k+1]=a[k]; } a[j]=x; /*插入待插數*/ } printf("輸出:\n"); for(j=0;j<=n-1;j++) printf("%d ",a[j]); return 0 ; }
運行結果:
隨機產生一個數插入到已有的數組中,排序後輸出: