一、代码
#include<stdio.h> #define n 5 //数组Data1的元素个数; #define m 9 //数组Data2的元素个数; int Data[n+m]; //存放归并排序后的数组; //调用函数将两个有序数组合并成一个; void PAmay(int Data1[],int Data2[]) { int i,j,k,*p; int L; //两个数组的其中一个全部放入Data数组中,将有剩余数组的元素个数赋给L; i=j=k=0; while(i<n&&j<m) //两个数组都没完; { if(Data1[i]<Data2[j]) Data[k++]=Data1[i++]; else Data[k++]=Data2[j++]; } if(i<n) //Data2全部放到数组Data中,Data1有剩余; { p=Data1; L=n; } else //Data1全部放到数组Data中,Data2有剩余; { i=j; p=Data2; L=m; } while(i<L) //有剩余数组放入Data数组中; Data[k++]=p[i++]; } int main(void) { int i; int Data1[n]={1,3,5,7,9}; int Data2[m]={2,4,6,7,9,11,13,14,15}; PAmay(Data1,Data2); printf("归并排序后的数组为:\n"); for(i=0;i<n+m;i++) printf("%d ",Data[i]); printf("\n"); return 0; }