public class MinHeap {
public static int kthLargestElement(int k, int[] array){
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
int size = array.length;
for (int i = 0; i < size; i++){
minHeap.add(array[i]);
if (minHeap.size() > k){
minHeap.poll();
}
}
return minHeap.peek();
}
public static void main(String[] args) {
int[] array = {7, 10, 4, 3, 20, 15, 2};
System.out.println(MinHeap.kthLargestElement(3, array));
}
}
public class MaxHeap {
public static int kthSmallestElement(int k, int [] array){
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
int length = array.length;
for (int i = 0; i < length; i++){
maxHeap.add(array[i]);
if (maxHeap.size() > k){
maxHeap.poll();
}
}
return maxHeap.peek();
}
public static void main(String[] args) {
int [] array = {1, 3, 8, 9, 4, 7, 6};
System.out .println(MaxHeap.kthSmallestElement(3, array));
}
}