# K’th Smallest/Largest Element using STL

Last Updated : 08 Feb, 2023

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:

## C++

 `// STL based C++ program to find k-th smallest ` `// element. ` `#include ` `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; ` `} `

## Java

 `import` `java.util.Set;` `import` `java.util.TreeSet;`   `public` `class` `KthSmallest {` `    ``public` `static` `int` `kthSmallest(``int``[] arr, ``int` `n, ``int` `k) {` `        ``// Insert all elements into the set` `        ``Set s = ``new` `TreeSet();` `        ``for` `(``int` `i = ``0``; i < n; i++) {` `            ``s.add(arr[i]);` `        ``}`   `        ``// Traverse set and print k-th element` `        ``int` `i = ``0``;` `        ``for` `(Integer num : s) {` `            ``if` `(i == k - ``1``) {` `                ``return` `num;` `            ``}` `            ``i++;` `        ``}` `        ``return` `-``1``;` `    ``}`   `    ``public` `static` `void` `main(String[] args) {` `        ``int``[] arr = {``12``, ``3``, ``5``, ``7``, ``3``, ``19``};` `        ``int` `n = arr.length, k = ``2``;` `        ``System.out.println(``"K'th smallest element is "` `+ kthSmallest(arr, n, k));` `    ``}` `}`

## Python3

 `# STL based python program to find k-th smallest ` `# element. ` `from` `sortedcontainers ``import` `SortedList, SortedSet, SortedDict`   `def` `kthSmallest(arr, n, k) :` `    ``# Insert all elements into the set ` `    ``s``=``SortedSet(); ` `    ``for` `i ``in` `range``(``0``,n): ` `        ``s.add(arr[i]); ` `    `  `    ``# Traverse set and print k-th element ` `    ``i``=``1``;` `    ``ans``=``-``1``;` `    ``for` `val ``in` `s:` `        ``if``(i``=``=``k):` `            ``ans``=``val;` `            ``break``;` `        ``i``+``=``1``;`   `    ``return` `ans; `   `arr ``=` `[ ``12``, ``3``, ``5``, ``7``, ``3``, ``19` `]; ` `n ``=` `len``(arr);` `k ``=` `2``; ` `print``(``"K'th smallest element is "``,kthSmallest(arr, n, k)); `

## C#

 `using` `System;` `using` `System.Linq;` `using` `System.Collections.Generic;`   `class` `KthSmallest` `{` `    ``public` `static` `int` `kthSmallest(``int``[] arr, ``int` `k)` `    ``{` `        ``// Insert all elements into the set` `        ``var` `s = ``new` `SortedSet<``int``>(arr);`   `        ``// Traverse set and print k-th element` `        ``return` `s.ElementAt(k - 1);` `    ``}`   `    ``public` `static` `void` `Main(``string``[] args)` `    ``{` `        ``int``[] arr = { 12, 3, 5, 7, 3, 19 };` `        ``int` `k = 2;` `        ``Console.WriteLine(``"K'th smallest element is "` `+ kthSmallest(arr, k));` `    ``}` `}`

## Javascript

 `// Javascript program to find k-th smallest element. `   `function` `kthSmallest(arr, n, k) ` `{ ` `// Insert all elements into the set ` `    ``let s= ``new` `Set(); ` `    ``for` `(let i = 0; i < n; i++) ` `    ``s.add(arr[i]); ` `    `  `    ``// Traverse set and print k-th element ` `    ``let i = 0; ` `    ``for` `(const entry of s.values()) ` `    ``{` `        ``if``(i==k)` `        ``{` `            ``i=entry;` `            ``break``;` `        ``}` `        ``i++;` `    ``}` `        `  `    ``return` `i; ` `} `   `let arr = [ 12, 3, 5, 7, 3, 19 ]; ` `let n = arr.length, k = 2; ` `document.write(``"K'th smallest element is "``+ kthSmallest(arr, n, k));`

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.

Previous
Next