Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
题解分析:
归并排序
注意:排序结果不能申请另外的内存空间,直接存储在数组A中,所以此时 应该从后往前进行结果数组的填充,防止覆盖掉原数组A中元素
class Solution { public: void merge(int A[], int m, int B[], int n) { assert(A != NULL && B != NULL && m >= 0 && n >= 0); int ia = m - 1; int ib = n - 1; int idx = m + n - 1; while (ia >= 0 && ib >= 0) { if (A[ia] >= B[ib]) { A[idx--] = A[ia--]; } else { A[idx--] = B[ib--]; } } while (ia >= 0) { A[idx--] = A[ia--]; } while (ib >= 0) { A[idx--] = B[ib--]; } } };
Leetcode:Merge Sorted Array 归并排序
时间: 2024-11-11 03:17:15