题解 | #寻找第K大#快速排序

寻找第K大

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

import java.util.*;

public class Solution {
    public int findKth(int[] a, int n, int K) {
        int k = n -K;
        int lo = 0, hi = n-1;
        while( lo < hi){
            int p = quickSort(a,lo,hi);
            if( p > k){
                hi = p-1;
            }else if( p < k){
                lo = p+1;
            }else{
                break;
            }
        }
        return a[k];
    }
    public int quickSort(int[] arr,int i,int j){
        int lo = i,hi =j;
        int key = arr[i];
        while(lo < hi){
            while(lo < hi && key <= arr[hi]){
                hi --;
            }
            while(lo <hi && key >= arr[lo]){
                lo ++;
            }
            exchange( arr, lo, hi);
        }
        exchange( arr, i, lo);
        return lo;
    }
    public void exchange( int[] arr,int i, int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

全部评论

相关推荐

鼠鼠第一次实习,啥也不懂一直是自己一个人吃的饭,不会做工作老是被嫌弃,大人的世界是这样的吗?
我是星星我会发亮:好的mt有两种,一种愿意教你的,一种几乎什么活都不给你派让你很闲允许你做自己事情的
实习吐槽大会
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-24 20:25
腾讯今年实习招了这么多人,后面秋招还会招人吗??想着秋招再战来着
牛客96559368...:腾讯好像2020年之后就是实习生招得多,应届生基本上不招,纯实习转正
点赞 评论 收藏
分享
05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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