# Kth Smallest Element

Posted: 21 Nov, 2020

Difficulty: Easy

#### You are given an array of integers 'ARR' of size 'N' and another integer 'K'. Your task is to find and return 'K'th smallest value present in the array.

#### Note: All the elements in the array are distinct.

##### Input format

```
The first line of input contains an integer 'T' representing the number of the test case. Then the test case follows.
The first line of each test case contains two space-separated integers ‘N’ representing the size of the array and ‘K’.
The second line contains N space-separated integers that represent elements of the array ARR.
```

##### Output format

```
For each test case, print a single line that contains a single integer which is the Kth smallest element of the array.
The output of each test case will be printed in a separate line.
```

##### Note:

```
You do not need to print anything; it has already been taken care of. Just implement the given function.
```

##### Constraints:

```
1 <= T <= 100
1 <= N <=10 ^ 4
1 <= K <= N
1 <= ARR[i] <= 10 ^ 9
Time limit: 1 sec.
```

Approach 1

Approach 2

- We’ll use min heaps to store the elements of 'ARR' and perform 'K' GETMIN operations to get Kth minimum element.
- We’ll create an empty heap MINHEAP.
- We’ll add 'ARR'['I'] to MINHEAP for each 0 <= 'I' < 'N'. Every time the element is added the structure will HEAPIFY itself, such that the minimum element is always at the root node of the heap.
- Call GETMIN function 'K' times and store the result in 'KTHMIN' variable.
- Return 'KTHMIN'.

Approach 3

We’ll use a max heap of fixed size 'K' to store the elements of 'ARR' and perform a single 'GETMAX' operation to get 'K'th minimum element.

- We’ll create an empty heap 'MAXHEAP'.
- We’ll add 'ARR'['I'] to 'MAXHEAP' for each 0 <= 'I' < 'K'. Every time the element is added the structure will HEAPIFY itself, such that the maximum element is always at the root node of the heap.
- For each 'I' where, 'K' <= 'I' <= N, If 'ARR'['I'] < 'MAXHEAP'.'GETMAX'
- Replace ROOT of 'MAXHEAP' by 'ARR'['I'] .
- HEAPIFY the 'MAXHEAP'.

- Call 'GETMAX' and store its value in 'KTHMIN'.
- Return 'KTHMIN'.