In-place merge of two arrays

前端 未结 4 2068
小鲜肉
小鲜肉 2021-02-01 06:54

We have an array of size m+n in which m elements are present, in sorted order, and a second array of size n, again in sorted order. We want both of

4条回答
  •  -上瘾入骨i
    2021-02-01 07:06

        // merge the elements in B[] to A[], starting from the last one
        void merge(int A[], int m, int B[], int n) {
           // m-1 and n-1 represent the current element index in A[] and B[] respectively
          while (n > 0) { // there are still elements in B[] not merged
              if (m > 0 && A[m-1] > B[n-1]) { // current element in A[] > current element in B[]
                A[m+n-1] = A[m-1]; // move current element of A[] to its right position
                --m; // decrease current element index of A[]
              }
             else { // current element in A[] <= current element in B[]
                A[m+n-1] = B[n-1]; // move current element in B[] to its right position
                --n; // decrease current element index of B[]
             }
          }
       }
    

提交回复
热议问题