簡體   English   中英

查找未排序數組中的最大K數

[英]Finding the largest K numbers in an unsorted array

我試圖找到給定排序數組的最大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);
        }
    }

使用排序的數組,

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

您正在使用的樞軸和分區的一個屬性是,在每個分區步驟之后,保證樞軸之前的所有元素都小於或等於樞軸,並且樞軸之后的所有元素都更大。 因此,在找到第K個數據透視表之后,數組將在其后面具有最大的K.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM