#include <iostream> #include <stack> #include <string> using namespace std; //merge a b两个排序过的数组,a的size是m,b的size是n,a具有足够大的空间存放merge后的元素们 //思想是从后往前merge,因为后面都是没有存放数的空间,所以可以避免数组的平移 void Merge(int a[], int b[], int m, int n) { int mWalker = m-1; int nWalker = n-1; for (int i = m+n-1 ; i > 0; i--){ if (a[mWalker] > b[nWalker]) a[i] = a[mWalker--]; else a[i] = b[nWalker--]; } } int main() { int a[10] = {0, 5, 10, 15, 20, 25}; //总大小为10,有效元素6个 int b[4] = {3, 13, 17, 23}; //有效元素4个 Merge(a, b, 6, 4); for (int i = 0; i < 10; i++) cout<<a[i]<<endl; return 0; }
EOF