/*归并排序
即将两个都升序(或降序)排列的数据合并
成一个仍案原序列排列的序列。
例子1、有一个含有6个数据升序序列和一个含有4个数据
的升序序列,将二者合并成一个含有10个数据的额升序序列
*/
#include<stdio.h>
#define m 6
#define n 4
int main(int argc,char const *argv[])
{
int a[m]={-3,6,19,26,68,100};
int b[n]={8,10,12,22};
int i,j,k,c[m+n];
i=j=k=0;
while(i<m&&j<n)//将a、b数组中较小的数依次存放到c数组中
{
if(a[i]<b[i])
{
c[k]=a[i];
i++;
}else
{
c[k]=b[j];
j++;
}
k++;
while(i>=m&&j<n)
{
c[k]=b[i];
k++;
j++;
}
while(j>=n&&i<m)
{
c[k]=a[i];
k++;
i++;
}
}
for(i=0;i<m+n;i++)
{
printf("%d ",c[i]);
}
return 0;
}
//-3 6 8 10 12 22 19 26 68 100