题目要求:
给出两个有序的整数数组 A和B ,请将数组 B合并到数组A 中,变成一个有序的数组
注意:
可以假设A 数组有足够的空间存放B 数组的元素,A 和 B中初始的元素数目分别为 m和n
解题思路:
我们首先要判断当A数组当中没有元素的情况,即m=0;
要求合并后的数组有序,要先进行排序,将A、B中的元素进行比较,放入m+n-1 的A数组中;
最后还应该判断一种情况就是,当A中的元素以及合并完了,而B中还有剩余的元素。
具体实现程序如下:
void merge(int* A, int ALen, int m, int* B, int BLen, int n)
{
// write code here
if(m==0)
{
for(;n>0;n--)
{
A[n-1]=B[n-1];
}
}
else
{
int a=m-1;
int b=n-1;
int s=m+n-1;
while(a>=0&&b>=0)
{
if(A[a]>B[b])
{
A[s]=A[a];
a--;
s--;
}
else
{
A[s]=B[b];
b--;
s--;
}
}
if(a==-1)
{
for(;b>=0;b--)
{
A[b]=B[b];
}
}
}
}
1569

被折叠的 条评论
为什么被折叠?



