以从小到大排序为例:
思路:每次比较两个数组的第一个数,取较小的那一个,取完之后将该数从对应数组中删除,然后继续比较,如果某一数组为空,则直接将另外一个数组的元素依次复制到新的合并数组中即可。
#include <iostream>
using namespace std;
void mergeTwoArray(int *a, int n, int *b, int m, int *c)
{
int i, j, k;
i = j = k = 0;
if (n == 0)
c = b;
if (m == 0)
c = a;
while (i < n && j < m)
{
if (a[i] < b[j])
c[k++] = a[i++];
else
c[k++] = b[j++];
}
while (i < n)
//数组a还没有空
c[k++] = a[i++];
while (j < m)
//数组b还没有空
c[k++] = b[j++];
}
int main()
{
int aa[] = {1,3,5,7};
int bb[] = {2,4,6,8,10};
int n, m;
n = sizeof(aa) / sizeof(int);
m = sizeof(bb) / sizeof(int);
int ul = n + m;
int *cc = new(nothrow) int[ul];
mergeTwoArray(aa, n, bb, m, cc);
for (int i = 0; i < ul; i++)
{
cout << cc[i] << endl;
}
return 0;
}