题解 | #排序#

排序

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

基于泛型lambda表达式与迭代器实现的快排

    vector<int> MySort(vector<int>& arr) {
        // write code here
        auto quickSort = [&](auto& func, auto begin, auto end, auto cmp){
            auto partition = [](auto begin, auto end, auto cmp){
                auto pivotK = *begin;    
                --end;
                while(begin < end){
                    while(begin < end && !cmp(*end,pivotK))--end;
                    swap(*begin,*end);
                    while(begin < end && cmp(*begin,pivotK))++begin;
                    swap(*begin,*end);
                }
                return begin;
            };
            if(begin == end)return;
            auto pos = partition(begin,end,cmp);
            func(func,begin,pos,cmp);
            func(func,++pos,end,cmp);
        };
        quickSort(quickSort,arr.begin(),arr.end(),less<int>());
        return arr;    
    }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务