Получение наибольшего k элементов двойного массива
Проблема, с которой я сталкиваюсь, заключается в следующем:
У меня есть массивdouble
с которого я хочу держать вершинуk
большие значения.
Arrays.sort
, Например вэтот пример с относительной проблемой предлагается использовать этот подход.Так как меня интересует только первоеk
элементы, с которыми я также экспериментировалMinMaxPriorityQueue
, Я создалMinMaxPriorityQueue
сmaximumSize
:Конечно, есть снова автобокс.
Builder<Comparable> builder = MinMaxPriorityQueue.maximumSize(maximumSize);
MinMaxPriorityQueue<Double> top2 = builder.create();
Проблема в том, что ордер восходящий, что противоположен тому, который я хочу. Поэтому я не могу использовать это таким образом.
Чтобы указать реальные параметры задачи, мои массивы50
элементы длинные и меня интересуют вплоть до верхаk = 5
элементы.
Так есть ли способ обойти эту проблему, используя второй подход? Должен ли я остаться с первым, хотя мне не нужны все отсортированные элементы? Знаете ли вы, есть ли существенная разница в скоростных показателях (мне придется использовать это во многих ситуациях, так что именно там нужна скорость)? Есть ли другое решение, которое я мог бы использовать?
Что касается производительности, я знаю, что теоретически могу проверить это сам, но я немного вне времени, и если у кого-то есть какое-либо решение, я рад услышать это (или прочитать это в любом случае).