题解 | #合并两个有序的数组#

合并两个有序的数组

http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        /*//直接插入排序
        int i=0,j=0;
        while(j<n)
        {
            while(A[i]<=B[j]&&i<m+j)
                i++;
            for(int t=m+j; t>i; t--)
                A[t]=A[t-1];
            A[i++]=B[j++];
        }
        */
        //第二种,直接在A上从后往前操作
        int i=m-1,j=n-1,k=m+n-1;
        while(i>=0&&j>=0)
        {
            if(A[i]>B[j])
                A[k--]=A[i--];
            else
                A[k--]=B[j--];
        }
        while(i>=0)
                A[k--]=A[i--];
        while(j>=0)
                A[k--]=B[j--];
    }
};
全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务