没什么好说的,这个功能没记错的话是一个排序算法的一部分,而且应用十分广泛:
class Solution { public: void merge(int A[], int m, int B[], int n) { int *tmp = new int[m]; for(int i = 0; i < m; ++i) tmp[i] = A[i]; int i = 0; int j = 0; while( i < m && j < n){ if(tmp[i] < B[j]){ A[i+j] = tmp[i]; ++i; continue; } A[i+j] = B[j]; ++j; } for(; i < m; ++i) A[i+j] = tmp[i]; for(; j < n; ++j) A[i+j] = B[j]; } };
算法导论形象得将其称之为左手牌和右手牌。比喻十分形象。问题就是牌组合并的问题
运行时间看系统了,一次跑到了 3ms, 一次是 5ms