题解 | #排序#

排序

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

归并排序:先分裂后整合,依据这个思路来写代码;

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    vector<int> MySort(vector<int>& arr) {
        // write code here
        int n = arr.size();
        vector<int> rec(n, 0);
        split(arr, 0, n-1, rec);
        return arr;
    }
    
    void split(vector<int>& arr, int left, int right, vector<int>& rec){
        if(left >= right){
            return;
        }
        
        int mid = left + (right - left) / 2;
        split(arr, left, mid, rec);
        split(arr, mid+1, right, rec);
        merge(arr, left, mid, right, rec);
    }
    
    void merge(vector<int>& arr, int left, int mid, int right, vector<int>& rec){
        int i = left, j = mid+1;
        int t = left;
        
        while(i <= mid && j<= right){
            if(arr[i] <= arr[j]){
                rec[t] = arr[i];
                t++;
                i++;
            }
            else{
                rec[t] = arr[j];
                t++;
                j++;
            }
        }
        
        while(i <= mid && t <= right){
            rec[t] = arr[i];
            t++;
            i++;
        }
        
        while(j <= right && t <= right){
            rec[t] = arr[j];
            t++;
            j++;
        }
        
        for(int i=left; i<=right; i++){
            arr[i] = rec[i];
        }
        
    }
    
};
全部评论

相关推荐

03-27 01:58
已编辑
西北工业大学 Java
在平静中度过当下:如果这个bg也简历挂的话可能他们现在不缺人了吧,我也是这两天投的,阿里和快手投的岗都是简历秒挂
点赞 评论 收藏
分享
牛马43373018...:这人真懂什么叫熵吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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