Die größten k Elemente eines Double Arrays erhalten

Das Problem, mit dem ich konfrontiert bin, ist dieses:

Ich habe ein Array vondoubles von denen ich das top behalten möchtek größere Werte.

Ich habe einige Implementierungen mit @ gesehArrays.sort. Zum Beispiel indieses Beispiel Bei relativen Problemen wird empfohlen, diesen Ansatz zu verwenden.Seit ich mich nur für das erste @ interessiek Elemente, mit denen ich auch experimentiert habeMinMaxPriorityQueue. Ich habe ein @ erstelMinMaxPriorityQueue mit einermaximumSize:

atürlich gibt es wieder Autoboxin

Builder<Comparable> builder = MinMaxPriorityQueue.maximumSize(maximumSize);
MinMaxPriorityQueue<Double> top2 = builder.create();

Das Problem ist, dass die Reihenfolge aufsteigend ist und dass es das Gegenteil von der ist, die ich will. Ich kann es also nicht so benutzen.

Um die wahren Parameter des Problems anzugeben, geht es bei meinen Arrays um50 elements long und ich interessiere mich für up to the topk = 5 elements.

So gibt es eine Möglichkeit, dieses Problem mit dem zweiten Ansatz zu umgehen? Soll ich beim ersten bleiben, obwohl ich nicht wirklich alle Elemente sortiert brauche? Wissen Sie, ob es einen signifikanten Unterschied in der Geschwindigkeitsleistung gibt (ich werde dies in vielen Situationen verwenden müssen, damit die Geschwindigkeit dort benötigt wird)? Gibt es eine andere Lösung, die ich verwenden könnte?

Bei der Aufführung weiß ich, dass ich es theoretisch selbst überprüfen kann, aber die Zeit drängt und wenn jemand eine Lösung findet, bin ich froh, sie zu hören (oder sie trotzdem zu lesen).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage