将两个有序非严格递增数组,合并成一个数组,输出。
例如:int num1[] = {2, 5, 7, 7, 11}; int num2[] = {3, 5, 8};
输出:nums3[] = {2, 3, 5, 5, 7, 7, 8, 11};
函数:void mergeNum(int * array1,int size1,int * array2,int size2,int * array3,int size3)
1.将数组1中的第一个元素和数组2中第一个元素相比,将较小的输入给第三个数组;
2.再用较小元素数组中第二个元素,与较大元素相比,再将较小元素输入给第三个数组;
3.当某一个数组输入完,再将另一个数组中剩下的数组依次输入第三个数组;
#include <stdio.h>
#include <string.h>
void mergeNum(int * array1,int size1,int * array2,int size2,int * array3,int size3)
{
int i = 0;
int j = 0;
int cnt = 0;
while(i < size1 && j < size2 )
{
if(array1[i] <= array2[j])
{
array3[cnt] = array1[i];
cnt++;
i++;
}
else
{
array3[cnt] = array2[j];
cnt++;
j++;
}
}
while (i < size1)
{
array3[cnt] = array1[i];
cnt++;
i++;
}
while (j < size2)
{
array3[cnt] = array1[j];
cnt++;
j++;
}
}
int main()
{
int num1[] = {2, 5, 7, 7, 11};
int num2[] = {3, 5, 8};
int num3[8];
int size1 = sizeof(num1);
mergeNum(num1,sizeof(num1)/sizeof(num1[0]),num2,sizeof(num2)/sizeof(num2[0]),num3,sizeof(num3)/sizeof(num3[0]));
//printf("size1 = %d\n",size1);
for(int i = 0;i < 8;i++)
{
printf("num3[%d] = %d\n",i,num3[i]);
}
return 0;
}