题解 | #寻找第K大#

寻找第K大

http://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

class Solution {
public:
    int findKth(vector<int> a, int n, int K) {
        return qfindKth(a, 0, n-1, K);
    }
    int qfindKth(vector<int> &a, int left, int right, int K){//自己构建的快速排序算法
        int l = left,r = right;
        int ans = a[left];
        while(l<r){
            while(l<r && a[r] <= ans) r--;
            a[l] = a[r];

            while(l<r && a[l] >= ans) l++;
            a[r] = a[l];
        }
        a[l] = ans;
        if(l == K-1) return a[l];//如果已经是第k个了,就返回,否则就接着快速排序
        else if(l > K-1) return qfindKth(a, 0, l-1, K);
        else return qfindKth(a,l+1, right,K);
    }
};
全部评论

相关推荐

群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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