C語(yǔ)言歸并排序
即將兩個(gè)都升序(或降序)排列的數(shù)據(jù)序列合并成一個(gè)仍按原序排列的序列。
	
上代碼:
#include <stdio.h> #include <stdlib.h> #define m 6 #define n 4 int main() {    int a[m]={-3,6,19,26,68,100} ,b[n]={8,10,12,22};   int i,j,k,c[m+n];   int l ;   i=j=k=0;   printf("a數(shù)組的元素:/n");   for(l = 0 ; l < m ; l++)   {     printf("%d ",a[l]);     }   printf("/nb數(shù)組的元素:/n");   for(l = 0 ; l < n ; l++)   {     printf("%d ",b[l]);     }   printf("/n合并后的數(shù)組元素:/n");   while(i<m && j<n)  /*將a、b數(shù)組中的較小數(shù)依次存放到c數(shù)組中*/   {      if(a[i]<b[j])      {       c[k]=a[i];        i++;     }     else      {       c[k]=b[j];        j++;     }     k++;   }   while(i>=m && j<n)  /*若a中數(shù)據(jù)全部存放完畢,將b中余下的數(shù)全部存放到c中*/   {      c[k]=b[j];      k++;      j++;    }   while(j>=n && i<m)  /*若b中數(shù)據(jù)全部存放完畢,將a中余下的數(shù)全部存放到c中*/   {      c[k]=a[i];      k++;      i++;    }   for(i=0;i<m+n;i++)     printf("%d ",c[i]);   return 0 ; } 運(yùn)行結(jié)果:
	
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答