找出第K大的数

给定一个整数数组,找出数组中第K大的数
输入、输出描述
输入:
arr: 整数数组
n: 数组长度
k: 取值1到len(arr)的整数
输出:
第k大的数
Example
输入:
arr=[1,3,6,2,4]
n=5
k=2
输出:
4
代码:
import java.util.*;



public class Main {

 public int solution(int[] arr,int n,int k) {
		   quicksort(arr,0,n-1);
 
        return arr[n-k];
 }
 public  void quicksort(int[] arr,int start,int end){
    if(start < end){
    	int key = arr[start];
       int i = start,j = end;
    	while(start < end){
      		//右边找小的
      		while(start < end && arr[end] >= key){
      			end--;
      		}
      		if(start < end){
        		arr[start] = arr[end];
        		start++;
      		}
      		//左边找大的
     		while(start<end && arr[start] <= key){
      			start++; 
     		}
      		if(start < end){
          	arr[end] = arr[start];
        		end--;
      		}
  		}
   	   arr[start] = key;
      quicksort(arr,i,start-1);
      quicksort(arr,start+1,j);
    }    
  }
 
}
一个创业中的苦逼程序员
评论专区

隐藏