Получение наибольшего k элементов двойного массива

Проблема, с которой я сталкиваюсь, заключается в следующем:

У меня есть массивdoubleс которого я хочу держать вершинуk большие значения.

Я видел некоторые реализации, включающиеArrays.sort, Например вэтот пример с относительной проблемой предлагается использовать этот подход.Так как меня интересует только первоеk элементы, с которыми я также экспериментировалMinMaxPriorityQueue, Я создалMinMaxPriorityQueue сmaximumSize:

Конечно, есть снова автобокс.

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

Проблема в том, что ордер восходящий, что противоположен тому, который я хочу. Поэтому я не могу использовать это таким образом.

Чтобы указать реальные параметры задачи, мои массивы50 элементы длинные и меня интересуют вплоть до верхаk = 5 элементы.

Так есть ли способ обойти эту проблему, используя второй подход? Должен ли я остаться с первым, хотя мне не нужны все отсортированные элементы? Знаете ли вы, есть ли существенная разница в скоростных показателях (мне придется использовать это во многих ситуациях, так что именно там нужна скорость)? Есть ли другое решение, которое я мог бы использовать?

Что касается производительности, я знаю, что теоретически могу проверить это сам, но я немного вне времени, и если у кого-то есть какое-либо решение, я рад услышать это (или прочитать это в любом случае).

Ответы на вопрос(2)

Ваш ответ на вопрос