**Objective**: Given an array of integers. find the K^{th} Smallest/largest element in the array.

Example: int[] A = { 1, 2, 10, 20, 40, 32, 44, 51, 6 }; K=4. 4^{th}smallest element in given array: 10

**Approach**: (K^{th} Smallest Element)

- Use min-Heap. (Click here to read about Priority Queue).
- Insert all the elements in the Priority Queue.
- Extract K elements from the priority queue. The last element (k
^{th}) extracted with be the k^{th}smallest element in the array.

**Complete Code:**

Output: 4th smallest element:10

**Note: **For k^{th} largest element, implement priority queue for max-Heap.

Is it faster to use hte quickselect algorithm ?

It is also possible to just sort the input array in ascending order and pick the k-1th element.

That will take O(n) time. Idea here is to not sort the entire array. We can use priority queue or quick sort (i.e. partition only k times) and pivot will land in its correct position.

Why not just use Arrays.sort() and pick the k-1 th element?