题解 | #归并排序#

排序

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;
    }
};
全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
寿命齿轮:实习就一段还拉了,项目一看就不是手搓,学历也拉了,技术栈看着倒是挺好,就是不知道面试表现能咋样。 不过现在才大三,争取搞两端大厂实习,或者一个纯个人项目+一段大厂,感觉秋招还是未来可期。
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务