Obteniendo los elementos k más grandes de una matriz doble
El problema que estoy enfrentando es este:
Tengo una serie dedouble
s de los cuales quiero mantener la cimak
valores mayores
Arrays.sort
. Por ejemplo eneste ejemplo Con un problema relativo, se sugiere utilizar este enfoque.Ya que solo estoy interesado en el primerok
elementos con los que también he experimentadoMinMaxPriorityQueue
. He creado unMinMaxPriorityQueue
con unmaximumSize
:Por supuesto, hay nuevamente autoboxing.
Builder<Comparable> builder = MinMaxPriorityQueue.maximumSize(maximumSize);
MinMaxPriorityQueue<Double> top2 = builder.create();
El problema es que el orden es el ascendente y es el opuesto al que quiero. Entonces no puedo usarlo de esta manera.
Para establecer los parámetros reales del problema, mis matrices se tratan50
elementos largos y estoy interesado en llegar a la cimak = 5
elementos.
Entonces, ¿hay alguna forma de evitar este problema utilizando el segundo enfoque? ¿Debo quedarme con el primero aunque realmente no necesito todos los elementos ordenados? ¿Sabe si hay alguna diferencia significativa en el rendimiento de la velocidad (tendré que usar esto en muchas situaciones, así que ahí es donde se necesita la velocidad)? ¿Hay alguna otra solución que pueda usar?
En cuanto al rendimiento, sé que teóricamente puedo verificarlo yo mismo, pero estoy un poco fuera de tiempo y si alguien tiene alguna solución, estoy feliz de escucharlo (o leerlo de todos modos).