题解 | #排序#

排序

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

#include <vector>
//归并排序  时间O(n log n) 空间O(n) 稳定
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
void merge(vector<int>& nums,vector<int>& tmpArr,int left,int mid,int right){
    //标记左半区第一个未排序的元素
    int l_pos=left;
    //标记右半区第一个未排序的元素
    int r_pos=mid+1;
    //临时数组元素下标
    int pos=left;
    //合并
    while(l_pos<=mid&&r_pos<=right){
        if(nums[l_pos]<nums[r_pos]) tmpArr[pos++]=nums[l_pos++];
        else tmpArr[pos++]=nums[r_pos++];
    }
    //合并左半区剩余元素
    while(l_pos<=mid){
        tmpArr[pos++]=nums[l_pos++];
    }
    //合并右半区剩余元素
    while(r_pos<=right){
        tmpArr[pos++]=nums[r_pos++];
    }
    //把临时数组中的合并后的元素复制回原来的数组
    while(left<=right){
        nums[left]=tmpArr[left];
        left++;
    }
}
void msort(vector<int>& nums,vector<int>& tmpArr,int left,int right){
    if(left<right){//超过一个元素 则继续划分
        //找中间点
        int mid=(right-left)/2+left;
        //递归划分左半区
        msort(nums,tmpArr,left,mid);
        //递归划分右半区
        msort(nums,tmpArr,mid+1,right);
        //合并已划分的部分
        merge(nums,tmpArr,left,mid,right);
    }
}

    vector<int> MySort(vector<int>& arr) {
        // write code here
        vector<int> tmpArr(arr.size());
        msort(arr,tmpArr,0,arr.size()-1);
        return arr;
    }
};

全部评论

相关推荐

秋招结束已经一段时间了&nbsp;一直在忙着毕业的事情&nbsp;浅浅总结一下自己的秋招经历吧~本人BG双非硕&nbsp;后端选手&nbsp;有一段小厂+腾讯暑期实习腾讯暑期转正loser秋招结束已经结束了有一段时间了总结一下秋招历程最大的感受就是秋招比起暑期更加卡学历秋招总共投了60多家吧一直面&nbsp;一直挂也投了两家银行科技岗&nbsp;都走到终面体检了都拒了(总体感觉本地的银行还是挺容易过的)可能本人更想去私企&nbsp;并且银行也挺卷听说一直到11月就只有一家小厂的offer并签约当保底然后也突然被WXG捞了&nbsp;本来都不对腾讯抱有希望了可能经过一整个秋招的面试积累吧&nbsp;以及本人有ACM经历&nbsp;WXG整体面试以做题偏多(一二面做了5道题&nbsp;4道hard)&nbsp;比较合自己胃口&nbsp;差不多半个月就把五轮面试过了进入录用评估&nbsp;但也一直没有结果到后面也陆陆续续有几家中厂也终面过泡池子一直到12月初华子给开了base杭州&nbsp;14a因为华子公积金的原因&nbsp;和小厂薪资上差距不大&nbsp;所以也一直犹豫是否毁约签华子&nbsp;但是内心也还对WXG抱有一丝幻想(虽然一直没有保温也没有任何消息)然后一直到12月中下旬&nbsp;华子要求去现场签约了&nbsp;但是WXG还是没有消息&nbsp;然后就连续发邮件和打电话催了好多次&nbsp;还是回复耐心等待直到华子签约那天&nbsp;经过内心挣扎已经决定毁约签华子了&nbsp;可能还是想平台更大一点吧&nbsp;然后最戏剧性的一幕来了&nbsp;就在我发毁约邮件没有5秒&nbsp;WXG打电话开奖了&nbsp;并且开奖也十分有诚意&nbsp;最终还是没有签约成功华子&nbsp;研究生期间也打了很多次华子的比赛还是对华子有感情的555整个秋招都是伴随着焦虑的&nbsp;我认为自己也是秋招大部分人的画像&nbsp;屡屡碰壁后不断怀疑自己&nbsp;但是可能自己也比较幸运吧&nbsp;但是也感谢自己在一次次陷入迷茫都没有放弃自己&nbsp;还是一直努力背八股&nbsp;刷题也祝各位牛友们共勉&nbsp;就算暂时没有好的offer&nbsp;不放弃一定会有好的结果的!!
点赞 评论 收藏
分享
2025-12-16 17:17
门头沟学院 产品经理
烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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