比较简单的一道题,这个方法是从后往前比较,效率更高。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
void merge(int A[], int m, int B[], int n) { int ia = m - 1, ib = n - 1, icuur = m + n - 1; while (ia >= 0 && ib >= 0) { //很巧妙,从后往前开始比较,效率高 A[icuur--] = A[ia] >= B[ib] ? A[ia--] : B[ib--]; } while (ib >= 0) { A[icuur--] = B[ib--]; } }