Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
C++代码如下:
#include<iostream> using namespace std; class Solution { public: void merge(int A[], int m, int B[], int n) { int i=m-1; int j=n-1; int k=m+n-1; while(i>=0&&j>=0) { if(A[i]>=B[j]) { A[k--]=A[i--]; } else { A[k--]=B[j--]; } } while(i>=0) { A[k--]=A[i--]; } while(j>=0) { A[k--]=B[j--]; } } }; int main() { int A[10]={1,3,5,7,9}; int B[5]={2,4,6,8,10}; Solution s; s.merge(A,5,B,5); for(auto a:A) cout<<a<<" "; cout<<endl; }
运行结果:

#include<iostream>
using namespace std;
class Solution
{
public:
void merge(int A[], int m, int B[], int n)
{
if(n==0)
return;
int i,j;
int index=m+n-1;
i=m-1;
j=n-1;
while(i>=0&&j>=0)
{
if(A[i]>B[j])
{
A[index]=A[i];
i--;
index--;
}
else
{
A[index]=B[j];
j--;
index--;
}
}
while(j>=0)
{
A[index]=B[j];
index--;
j--;
}
return;
}
};
int main()
{
int A[10]={1,3,5,7,9};
int B[5]={2,4,6,8,10};
Solution s;
s.merge(A,5,B,5);
for(auto a:A)
cout<<a<<" ";
cout<<endl;
}