题解 | #寻找第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;
    }
}

全部评论

相关推荐

废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
06-14 19:09
门头沟学院 Java
darius_:给制造业搞的,什么物料管理生产管理,设备管理点检,最最关键的就是一堆报表看板。个人觉得没啥技术含量都是些基本的crud,但是业务很繁琐那种
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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