64 合并排序数组

原题网址:http://www.lintcode.com/zh-cn/problem/merge-sorted-array/#

合并两个排序的整数数组A和B变成一个新的数组。

 注意事项

你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。

样例

给出 A = [1, 2, 3, empty, empty], B = [4, 5]

合并之后 A 将变成 [1,2,3,4,5]

 

 1 #include <iostream>
 2 #include <vector>
 3 #include <math.h>
 4 #include <string>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 //方法一;
 9 void mergeSortedArray(int A[], int m, int B[], int n)
10 {
11     if (n==0)
12     {
13         return ;
14     }
15     if (m==0)
16     {
17         for (int i=0;i<n;i++)
18         {
19             A[i]=B[i];
20         }
21     }
22     for (int i=0;i<n;i++)
23     {
24         A[m+i]=B[i];
25     }
26     sort(A,A+m+n);
27 }
28 
29 //方法二;
30  void mergeSortedArray_w(int A[], int m, int B[], int n)
31  {
32      if (n==0)
33      {
34          return ;
35      }
36 
37      int i=m-1,j=n-1;
38      int k=m+n-1;
39      while(i>=0&&j>=0)
40      {
41          if (A[i]>B[j])
42          {
43              A[k--]=A[i--];
44          }
45          else
46          {
47              A[k--]=B[j--];
48          }
49      }
50      
51      while (j>=0)
52      {
53          A[k--]=B[j--];
54      }
55  }

参考:

https://blog.csdn.net/guoziqing506/article/details/50949830

 

posted @ 2018-03-23 20:17  eeeeeeee鹅  阅读(161)  评论(0编辑  收藏  举报