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

我试图在给定排序数组的情况下找到最大的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);

        }

    }


慕村9548890
浏览 101回答 2
2回答

江户川乱折腾

使用排序的数组,for(int&nbsp;i=array.length-1;&nbsp;i>=0&nbsp;&&&nbsp;array.length-1&nbsp;-&nbsp;i&nbsp;<&nbsp;K;&nbsp;i--)&nbsp;System.out.println(array[i]));

森栏

您正在使用的透视表和分区的一个属性是,在每个分区步骤之后,可以保证透视表之前的所有元素都小于或等于透视表,并且透视表之后的所有内容都较大。因此,在找到第 K 个枢轴后,数组之后将具有 K 最大值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java