Die größten k Elemente eines Double Arrays erhalten
Das Problem, mit dem ich konfrontiert bin, ist dieses:
Ich habe ein Array vondouble
s von denen ich das top behalten möchtek
größere Werte.
Arrays.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).