import java.util.*;
public class Main{
public static void main(String[] args){
int arr[] = {6,2,7,1,3,5,6};
int res = findKthLarge(arr,0,arr.length-1, 4);
System.out.println(res);
}
private static int findKthLarge(int arr[], int left, int right, int k){
int pos = partition(arr, left, right);
int rightLen = right-pos+1;
if (rightLen==k)
return arr[pos];
else if (rightLen>k)
return findKthLarge(arr, pos+1, right, k);
else
return findKthLarge(arr, left, pos-1, k-rightLen);
}
private static int partition(int arr[], int left, int right){
int pivot = arr[left];
while (left<right){
while (left<right && arr[right]>=pivot)
right--;
swap(arr, left, right);
while (left<right && arr[left]<pivot)
left++;
swap(arr, left, right);
}
arr[left] = pivot;
return left;
}
private static void swap(int arr[], int a, int b){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}