题解 | #归并排序#

排序

http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    vector<int> MySort(vector<int>& arr) {
        sortseperate(arr, 0, arr.size()-1);
        return arr;
    }
    void sortseperate(vector<int>& arr,int l,int r){//分治
        if(l==r) return;//终止条件
        int m = (l+r)/2;
        sortseperate(arr, l, m);
        sortseperate(arr,m+1,r);//每次都m+1
        merge(arr,l,m,r);
    }
    void merge(vector<int>& arr,int l,int m,int r){//合并
        int* ans = new int[r-l+1];//注意这里的int[r-l+1]最后delete带[]
        int left = l,right = m+1;
        int i = 0;
        while(left<=m && right <=r){//这里注意是&&,就是一个不满足都不行
            ans[i++] = arr[left]<=arr[right]?arr[left++]:arr[right++];
        }
        while(left<=m) ans[i++] = arr[left++];
        while(right<=r) ans[i++] = arr[right++];
        for(int i = 0;i<r-l+1;i++){
            arr[l+i] = ans[i];
        }
        delete[] ans;
    }
};
全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务