//已知兩個排好序的數組A1和A2,內存在A1的末尾有足夠多的空間來容納
//A2,設計算法把A2插入到A1後面,使整體有序
// 歸併排序思想,從後往前處理
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <iterator>
using namespace std;
void MergeSort(int arr1[], int arr2[],int len1,int len2)
{
if(arr1 == NULL || arr2 == NULL || len1 < 0 || len2 < 0)
return ;
int i,j,k;
int len = len1 + len2;
i = len1 - 1;
j = len2 - 1;
k = len - 1;
while(i >= 0 && j >= 0)
{
if(arr1[i] > arr2[j])
arr1[k] = arr1[i--];
else
arr1[k] = arr2[j--];
--k;
}
while(i >= 0)
{
arr1[k] = arr1[i];
--k;
--i;
}
while(j >= 0)
{
arr1[k] = arr2[j];
--j;
--k;
}
}
int main()
{
int a1[20] = { 1,3,5,8,10};
int a2[5] = {2,4,6,9,12};
MergeSort(a1,a2,5,5);
copy(a1,a1 + 10,ostream_iterator<int>(cout," "));
return 0;
}