Merge Sorted Array

来源:互联网 发布:surface laptop 知乎 编辑:程序博客网 时间:2024/05/18 07:38

Given two sortedinteger arrays A and B, merge B into A as one sorted array.

Note:

You may assumethat A has enough space to hold additional elements from B. The number ofelements initialized in A and B are m and n respectively.

我在这里假设数组元素非递减排列.
选取A,B数组中元素最大的,放在A数组的最后,然后递减.这也是一个递归过程.

方法一:

classSolution {public:     void merge(int A[], int m, int B[], int n){        int last = m+n-1;        int lasta = m-1;        int lastb = n-1;        while(lasta>=0 &&lastb>=0) {            A[last--] = A[lasta]>B[lastb]?A[lasta--]:B[lastb--];        }        while (lastb+1){            A[last--] = B[lastb--];        }    } };

方法二:

classSolution {public:   void merge(int A[], int m, int B[], int n) {        if (n==0) return ;        if (m==0) {            while(n--) {                A[n]=B[n];            }            return;        }        if (A[m-1]>B[n-1]){            A[n-1+m]=A[m-1];            merge(A,m-1,B,n);        } else{            A[n-1+m]=B[n-1];            merge(A,m,B,n-1);        }    } };

0 0
原创粉丝点击