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 }
参考:
1 https://blog.csdn.net/guoziqing506/article/details/50949830