首页 > 编程语言 > 详细

LeetCode:215 数组中的第K个最大元素(堆排序)

时间:2020-10-04 10:00:18      阅读:53      评论:0      收藏:0      [点我收藏+]
class Solution {
    
    public void HeapAdjust(int[] nums,int s,int d){
        //int t = nums[s];
        int k = s;

        for(int i=s*2+1;i<=d;i=i*2+1){
            if((i+1<=d)&&nums[i]<nums[i+1]){
                i++;
            }

            if(nums[i]>nums[k]){
                int a = nums[i];
                nums[i] = nums[k];
                nums[k] = a;
                k=i;
            }
           else{
               return;
           }
        }
    }
    
    public int findKthLargest(int[] nums, int k) {
        int len = nums.length;

        for(int i=len/2-1;i>=0;i--){
            HeapAdjust(nums,i,len-1);
        }
        for(int i=0;i<k-1;i++){
            nums[0]=nums[len-1-i];
            HeapAdjust(nums,0,len-1-i);
        }
        return nums[0];    
    }
}

 

LeetCode:215 数组中的第K个最大元素(堆排序)

原文:https://www.cnblogs.com/dloooooo/p/13766376.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!