题解 | #寻找第K大#

寻找第K大

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

import java.util.*;

public class Solution { public int findKth(int[] a, int n, int K) { sort(a,0,n-1);

    // write code here
    return a[K-1];
}
public void sort(int[] arr ,int left,int right){
    if(left < right){
       int mid = partition(arr,left,right);
        sort(arr,left,mid);
        sort(arr,mid+1,right);
    }
}
 public int partition(int[] arr ,int left, int right){
    int l = left;
    int r = right+1;
    while(l<r){
        while(l<r){
            r--;
            if(arr[r] > arr[left] )
                break;

        }
        while(l<r){
            if(arr[l] < arr[left])
                break;
            l++;
        }
        swap(arr,l,r);
    }
    swap(arr,left,l);
    return l;
}

public void swap(int[] arr ,int left, int right){
    if(arr[left]==arr[right])
        return ;
    arr[left] = arr[left]^arr[right];
    arr[right] = arr[left]^arr[right];
    arr[left] = arr[left]^arr[right];
}

}

全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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