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

寻找第K大

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

import java.util.*;

public class Solution {
    public int findKth(int[] a, int n, int K) {
        // write code here
        quickSort(a,0,n-1);
        return a[n-K];
    }
    public void quickSort(int[] a,int begin,int end){
        if(begin>=end) return;
        int pivot=a[begin];
        int i=begin,j=end;
        while(i!=j){
            //从右向左找小于pivot的
            while(i<j&&a[j]>pivot){
                j--;
            }
            if(i<j){
                a[i++]=a[j];
            }
            //从左向右找大于pivot的
            while(i<j&&a[i]<pivot){
                i++;
            }
            if(i<j){
                a[j--]=a[i];
            }
        }
        a[i]=pivot;
        quickSort(a,begin,i-1);
        quickSort(a,i+1,end);
    }
}
全部评论

相关推荐

03-24 21:23
已编辑
郑州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务