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

 

转载于:https://www.cnblogs.com/Tang-tangt/p/8634016.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值