题解 | #排序#

排序

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

该题实现一个快速排序即可,注意vector是一个引用,否则函数调用后并不能改变vector

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    vector<int> MySort(vector<int>& arr) {
        // write code here
        quick_sort(arr,0,arr.size() - 1);
        return arr;
    }

    void quick_sort(vector<int>& a, int left, int right)
    {
        if(left >= right)
            return;
        int pivot = parti(a,left,right);
        quick_sort(a,left,pivot-1);
        quick_sort(a,pivot+1,right);
    }

    int parti(vector<int>& a, int left, int right)
    {
        int i = left;
        int j = right;
        int tmp = a[left];

        while(i < j)
        {
            while(i<j && a[j] >= tmp)
                j--;
            while(i<j && a[i] <= tmp)
                i++;

            if(i < j)
            {
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
        a[left] = a[i];
        a[i] = tmp;
        return i;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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