C语言之归并排序

来源:互联网 发布:程序员思维修炼 pdf 编辑:程序博客网 时间:2024/06/07 00:56

 即将两个都升序(或降序)排列的数据序列合并成一个仍按原序排列的序列。


上代码:

#include <stdio.h>#include <stdlib.h>#define m 6#define n 4int 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数组的元素:\n");  for(l = 0 ; l < m ; l++)  {  printf("%d  ",a[l]);}printf("\nb数组的元素:\n");for(l = 0 ; l < n ; l++)  {  printf("%d  ",b[l]);}printf("\n合并后的数组元素:\n");while(i<m && j<n)    /*将a、b数组中的较小数依次存放到c数组中*/    { if(a[i]<b[j]) {c[k]=a[i]; i++;}     else {c[k]=b[j]; j++;}     k++; }while(i>=m && j<n)   /*若a中数据全部存放完毕,将b中余下的数全部存放到c中*/{ c[k]=b[j]; k++; j++; } while(j>=n && i<m)   /*若b中数据全部存放完毕,将a中余下的数全部存放到c中*/ {  c[k]=a[i]; k++; i++; } for(i=0;i<m+n;i++)    printf("%d  ",c[i]);return 0 ;}
运行结果:




0 0