Глядя на ваш код, кажется, что вы очень озадачены тем, что такое minHeaps. Код, который у вас есть, совершенно неправильный, и говорить о том, что пора выполнять сложную сортировку с помощью границ, становится бессмысленным.
Ваш метод Merge ничего не делает для объединения двух списков, все, что он делает, это вставляет элементы в MinHeap и это тоже в отсортированном порядке !, что кажется совершенно бессмысленным.
Если вы используете MinHeap в качестве кучи, доступной для всех вызовов, а затем читаете из нее, то это O (n logn), поскольку вы вставляете n элементов в кучу, и вам не нужны все эти рекурсивные вызовы, просто вставьте их один за другим!
Так как это похоже на домашнюю работу, я лишь дам вам подсказку: в любой момент в куче должно быть не более k элементов.