#include<iostream>
using namespace std;
//将B数组合并到A数组中
void mergeArray(int a[],int alen,int b[],int blen)
{
int len = alen + blen-1;
alen--;
blen--;
while (alen >= 0 && blen >= 0) {
if (a[alen] > b[blen]) {
a[len--] = a[alen--];
}
else{
a[len--] = b[blen--];
}
}
while (blen >= 0) {//原A数组的最小一个数已经排完,将B数组剩余的数复制到A数组前面
a[len--] = b[blen--];
}
}
//将A数组和B数组放到C数组中
void mergeArrayToOtherArray(int a[],int alen,int b[], int blen, int c[])
{
int i = alen;
int j = blen;
int k = alen + blen;
i--;
j--;
k--;
while (i >= 0 && j >= 0) {
if (a[i] > b[j]) {
c[k--] = a[i--];
}
else{
c[k--] = b[j--];
}
}
while (j >= 0) {//已经将A数组排完了,将B数组复制到C数组中
c[k--] = b[j--];
}
while (i >= 0) {//已经将B数组排完了,将A数组复制到C数组中
c[k--] = a[i--];
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
int array1[10] = {2, 4, 6, 8, 10};
int array2[5] = {1, 3, 5, 7, 9};
mergeArray(array1, 5, array2, 5);
for (auto i : array1) {
cout<< i <<" ";
}
cout << "\n";
int array3[5] = {2, 4, 6, 8, 11};
int array4[5] = {3, 3, 5, 7, 20};
int array5[10];
mergeArrayToOtherArray(array3, 5, array4, 5, array5);
for (auto i : array5) {
cout<< i << " ";
}
cout << "\n";
}
return 0;
}