有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2。请实现一个函数,把A2中的所有数字插入到A1中并且所有数字是排序的。
这道题用的是归并排序的思想,不同的是我们需要从后往前复制数字,这样复杂度是O(M+N),M,N分别是A1,A2数组的长度,很简单的一道题,直接贴上代码:
-
#include <iostream>
-
using namespace std;
-
void merge(int a[],int len1,int b[],int len2)
-
{
-
int i = len1+len2;
-
i--;
-
len1--;
-
len2--;
-
-
while(len1 >= 0 && len2 >= 0)
-
{
-
if (a[len1] >= b[len2])
-
{
-
a[i--] = a[len1--];
-
}
-
else
-
{
-
a[i--] = b[len2--];
-
}
-
}
-
-
while (len1 >= 0)
-
{
-
a[i--] = a[len1--];
-
}
-
-
while (len2 >= 0)
-
{
-
a[i--] = b[len2--];
-
}
-
}
阅读(1407) | 评论(0) | 转发(0) |