public int findKthLargest(int[] nums, int k) {
int length=nums.length;
for (int j=length/2-1;j>=0;j--)
{
downAdjust(nums,j,length-1);
}
int kmax=nums[0];
kmax=nums[0];
nums[0]=nums[length-1];
length--;
for (int i=0;i<k-1;i++)
{
downAdjust(nums,0,length-1);
kmax=nums[0];
nums[0]=nums[length-1];
length--;
}
return kmax;
}
public void downAdjust(int []nums,int low,int high)
{
int i=low,j=(i+1)*2-1;
while (j<=high)
{
if (j+1<=high&&nums[j]<nums[j+1])
j++;
if (nums[i]<nums[j])
{
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
i=j;
j=(i+1)*2-1;
}
else
break;
}
}