Obtendo os maiores elementos k de uma matriz dupla
O problema que estou enfrentando é este:
Eu tenho uma matriz dedouble
s dos quais eu quero manter o topok
valores maiores.
Arrays.sort
. Por exemplo, emeste exemplo com questão relativa, sugere-se usar essa abordagem.Desde que eu estou interessado apenas no primeirok
elementos que eu também experimenteiMinMaxPriorityQueue
. Eu criei umMinMaxPriorityQueue
com ummaximumSize
:Claro que há novamente autoboxing.
Builder<Comparable> builder = MinMaxPriorityQueue.maximumSize(maximumSize);
MinMaxPriorityQueue<Double> top2 = builder.create();
O problema é que a ordem é a ordem ascendente e é o oposto do que eu quero. Portanto, não posso usá-lo dessa maneira.
Para indicar os parâmetros reais do problema, minhas matrizes são sobre50
elementos longos e estou interessado em até o topok = 5
elementos.
Então, existe alguma maneira de contornar esse problema usando a segunda abordagem? Devo ficar com o primeiro, mesmo que eu realmente não precise de todos os elementos classificados? Você sabe se existe alguma diferença significativa no desempenho da velocidade (terei que usá-lo em várias situações, para que a velocidade seja necessária)? Existe alguma outra solução que eu possa usar?
Quanto ao desempenho, eu sei que posso teoricamente verificá-lo, mas estou um pouco sem tempo e se alguém tiver alguma solução, fico feliz em ouvi-lo (ou lê-lo de qualquer maneira).