# K’th Smallest/Largest Element using STL

Given an array and a number k where k is smaller than size of array, we need to find the k’th smallest element in the given array. Examples:

Input : arr[] = {7, 10, 4, 3, 20, 15} k = 2 Output : 4 Smallest element is 3. Second smallest is 4. Input : arr[] = {7, 10, 4, 3, 3, 15} k = 2 Output : 4 Even if there are more than one occurrences of 3, answer should be 4. Input :arr[] = {7, 10, 4, 3, 20, 15} k = 4 Output : 10

We use set in C++ STL. 1) Insert all elements into a set. 2) Traverse the set and print k-th element.

**Implementation:**

## CPP

`// STL based C++ program to find k-th smallest ` `// element. ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` `int` `kthSmallest(` `int` `arr[], ` `int` `n, ` `int` `k) ` `{ ` ` ` `// Insert all elements into the set ` ` ` `set<` `int` `> s; ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `s.insert(arr[i]); ` ` ` `// Traverse set and print k-th element ` ` ` `auto` `it = s.begin(); ` ` ` `for` `(` `int` `i = 0; i < k - 1; i++) ` ` ` `it++; ` ` ` `return` `*it; ` `} ` `int` `main() ` `{ ` ` ` `int` `arr[] = { 12, 3, 5, 7, 3, 19 }; ` ` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]), k = 2; ` ` ` `cout << ` `"K'th smallest element is "` ` ` `<< kthSmallest(arr, n, k); ` ` ` `return` `0; ` `} ` |

**Output**

K'th smallest element is 5

**Time complexity:** O(n Log n). Note that set in STL uses a self-balancing BST internally and therefore time complexity of search and insert operations is O(log n). **Auxiliary Space: **O(n) where n is size of array, since n extra space has been taken.

**Related Posts : **

K’th Smallest/Largest Element in Unsorted Array | Set 1

K’th Smallest/Largest Element in Unsorted Array | Set 2 (Expected Linear Time K’th Smallest/Largest Element in Unsorted Array | Set 3 (Worst Case Linear Time)

This article is contributed by **Roshan Halwai**. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.