清晰明了

寻找第K大

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

import java.util.*;

public class Finder {
 public int findKth(int[] a, int n, int k) {
        // write code here
       quicksort(a,0,n-1,n-k);
        return a[n-k];
    }

    private void  quicksort(int[] a, int l,int r, int k) {
        if (l>=r)
            return ;
        int left=l-1;
        int right=r+1;
        int mid=a[(left+right)>>1];
        while (left<right){
            do {
                 left++;
            }
            while (a[left]<mid);
            do {
                right--;
            }
            while (a[right]>mid);
            if (left<right){
                int t=a[left];
                a[left]=a[right];
                a[right]=t;
            }
        }
        if (right>=k)quicksort(a,l,right,k);
        else  quicksort(a,right+1,r,k);
    }
}
全部评论

相关推荐

牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
迷茫的大四🐶:这就是他们口中的ai时代的一人公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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