题解 | #寻找第K大#

寻找第K大

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

class Solution {
public:
    int quick_sort(vector<int> &data, int left, int right){
        int base = data[left];
        while (left < right)
        {
            while (left < right && data[right] >= base)
                --right;
            data[left] = data[right];
            while (left < right && data[left] <= base)
                ++left;
            data[right] = data[left];
        }
        data[left] = base;
        return left;
    }
    
    int findKth(vector<int> a, int n, int K) {
        int low = 0;
        int high = n -1;
        K = n - K;
        while (true)
        {
            int index = quick_sort(a, low, high);
            if (index == K)
                return a[index];
            if (index < K)
                low = index + 1;
            if (index > K)
                high = index - 1;
        }
        
    }
};

全部评论

相关推荐

05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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