题解 | #快排1#

排序

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

pivot是基准元素,按照基准元素将数组分为两部分(大于和小于),pos就是分割后正确的基准元素位置,在寻找pos位置的过程中进行交换。

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

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务