为了账号安全,请及时绑定邮箱和手机立即绑定

在未排序的数组中查找最大的 K 个数字

在未排序的数组中查找最大的 K 个数字

慕村9548890 2022-08-17 12:30:32
我试图在给定排序数组的情况下找到最大的K个数字。例如:输入 - > [ 5, 12, 45, 32, 9, 20, 15] 输出 -> K = 3, [45, 32, 20]到目前为止,我编写的代码返回最大的 K 元素,但它需要返回最大的 K 个数字。任何帮助将不胜感激。public static int max_Numbers(int [] p, int K, int firstNum, int lastNum)    {        int pivot = partitionArr(p, firstNum, lastNum);        int m = p.length - K;        if (m == pivot)        {            return p[pivot];        }        if(m > pivot)        {            return max_Numbers(p, K, pivot + 1, lastNum);        }        else        {            return max_Numbers(p, K, firstNum, pivot - 1);        }    }
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

使用排序的数组,

for(int i=array.length-1; i>=0 && array.length-1 - i < K; i--) System.out.println(array[i]));



查看完整回答
反对 回复 2022-08-17
?
森栏

TA贡献1810条经验 获得超5个赞

您正在使用的透视表和分区的一个属性是,在每个分区步骤之后,可以保证透视表之前的所有元素都小于或等于透视表,并且透视表之后的所有内容都较大。因此,在找到第 K 个枢轴后,数组之后将具有 K 最大值。


查看完整回答
反对 回复 2022-08-17
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信