1 #include <iostream>
2 using namespace std;
3 void merge(int a[],int b[],int n,int c[])
4 {
5 int i=0,j=0,k=0;
6 while(i<n && j<n)
7 {
8 while(a[i]<=b[j]&& i<n && j<n) //注意这里和下面的相同
9 {
10 c[k++]=a[i++]; //将较小的数放入c中,然后k+1,i+1,之后返回循环判断条件是否成立,否则跳出循环执行下面的操作,将c的下一个赋值为b中的一个元素
11 }
12 while(a[i]>b[j] && i<n && j<n) //注意把i<n && j<n这个条件重复加上,因为在执行 的时候i,j可能已经到达5了,再继续计算就出错了
13 {
14 c[k++]=b[j++];
15 }
16 }
17 while(i<n)
18 {
19 c[k++]=a[i++];
20 }
21 while(j<n)
22 {
23 c[k++]=b[j++];
24 }
25 }
26 int main()
27 {
28 int n;
29 cin>>n;
30 int *a,*b,*c;
31 a=new int [n];
32 b=new int [n];
33 c=new int [2*n];
34 for(int i=0;i<n;i++)
35 {
36 cin>>a[i];
37 }
38 for(int i=0;i<n;i++)
39 {
40 cin>>b[i];
41 }
42 merge(a,b,n,c);
43 for(int i=0;i<2*n;i++)
44 {
45 cout<<c[i]<<" ";
46 }
47 }