# Selection Sort Algorithm & K’th Largest Element in Array

Selection Sort Algorithm | K’th Largest Element in Array | Find kth smallest element in the array | Selection sort in data structure | Selection Sort Algorithm in data structure | Selection sort program | What is selection sort?

**Selection sort is also known as IN-Place Sorting Algorithm.**

Rearranging the elements in a meaningful order can be done using a sorting algorithm. A sorting algorithm is used to sort a List/Array of integers, characters, floating-point numbers, and other user-defined data structures.

## ✔️ **Approach**

In the Selection sort, We choose the largest element from an array and swap it with the last element of the array.

The next step is to swap the second largest element of an array with the second last element of the array & so on.

Every time we have an array divided into two parts, sorted and unsorted, we look for an element to be added at the end of the sorted part.

❓**Why called the In-Place Sorting algorithm?**

Because it does not require any extra space for sorting.

Selection Sort Algorithm | Sorting by selection | What is selection sort?

**💻 First Find the max element from a given array**

```
function findMax(A) {
let ans = A[0];
for (let i = 1; i < A.length; i++) {
if (A[i] > ans) {
ans = A[i];
}
}
return ans;
}
findMax([5, 8, 1, 15, 7, 6, 2]) // output is 15.
Time Complexity of this way is O(n)
```

**💻 Find 2nd max element from an array**

Use the same above program with two For loops sequentially. First, find the first max element and then the second element. The Time Complexity of this way is also O(n).

**💻 Find 3rd max element from an array**

Use the same above program with three For loops sequentially. At First find 1st max, then 2nd & then 3rd. The Time Complexity of this way is still O(n).

❓**Above solution approach, we can use till 3rd or 4th max element but If we have to find the 100th or 1000th or Kth max element then how?**

TC is – O(n^2) & SC – O(1)

Selection Sort

```
Given Array = [5, 8, 1, 15, 7, 6, 2]
Length = 7, first Index = 0 & Last Index = 6
1. Find Max element from 0 to 6th index => 15 => Swap this with last element of array.
[5, 8, 1, 2, 7, 6, 15]; // 15 is now its sorted position.
2. Find Max element from 0 to 5th index => 8 => Swap with last element of remaining array 0 to 5th index.
[5, 6, 1, 2, 7, 8, 15]; // 8, 15 are now their sorted positions.
3. Find Max element from 0 to 4th index => 7 => Swap with last element of remaining array 0 to 4th index. 7 is already on 7th so swapping does not any impact.
[5, 6, 1, 2, 7, 8, 15]; // 7, 8, 15 are now their sorted positions.
4. Find Max element from 0 to 3th index => 6 => Swap it.
[5, 2, 1, 6, 7, 8, 15]; // 6, 7, 8, 15 are now their sorted positions.
5. Find max element in 0 to 2nd indices => 5
[1, 2, 5, 6, 7, 8, 15]; // 5, 6, 7, 8, 15 are now their sorted positions.
6. Find max element in 0 to 1 indices => 2 > Already on its correct position.
[1, 2, 5, 6, 7, 8, 15]; // 2, 5, 6, 7, 8, 15 are now their sorted positions.
So array length was 7, 6 elements are sorted so last 7th element automatically will be on its correct position.
```

```
function selectionSort(A) {
let n = A.length;
for (let i = n - 1; i > 0; i--) {
let maxIndex = 0; // Initially Consider 0th index as Max element Index.
for (let j = 1; j <= i; j++) { // start from 1.
if (A[j] > A[maxIndex]) {
maxIndex = j;
}
}
[A[i], A[maxIndex]] = [A[maxIndex], A[i]]; // swap with last ith element
}
return A;
}
```

Outer For Loop is running from the last index to the first index. The purpose of this for loop is to swap the Max element to the Last element.

Inner For loop is running from the First index to the Last Unsorted index. The purpose of this for loop is to find the Max element.

Now find kth largest element with same above selection sort

```
function findKthLargest(A, k) {
let n = A.length;
for (let i = n - 1; i > 0; i--) {
let maxIndex = 0;
for (let j = 1; j <= i; j++) {
if (A[j] > A[maxIndex]) {
maxIndex = j;
}
}
[A[i], A[maxIndex]] = [A[maxIndex], A[i]]; // swap
}
return A[n - k]; // Larger elements are in Right side that's why did (n-k)
}
```

Find kth smallest element with same above selection sort

```
function findKthSmallest(A, k) {
let n = A.length;
for (let i = n - 1; i > 0; i--) {
let maxIndex = 0;
for (let j = 1; j <= i; j++) {
if (A[j] > A[maxIndex]) {
maxIndex = j;
}
}
[A[i], A[maxIndex]] = [A[maxIndex], A[i]]; // swap
}
return A[k - 1];
}
```

```
findKthSmallest([8, 16, 80, 55, 32, 8, 38, 40, 65, 18, 15, 45, 50, 38, 54, 52, 23, 74, 81, 42, 28, 16, 66, 35, 91, 36, 44, 9, 85, 58, 59, 49, 75, 20, 87, 60, 17, 11, 39, 62, 20, 17, 46, 26, 81, 92], 9)) // find 9th smallest
output = 17
findKthLargest([8, 16, 80, 55, 32, 8, 38, 40, 65, 18, 15, 45, 50, 38, 54, 52, 23, 74, 81, 42, 28, 16, 66, 35, 91, 36, 44, 9, 85, 58, 59, 49, 75, 20, 87, 60, 17, 11, 39, 62, 20, 17, 46, 26, 81, 92], 12) // Fidn 12th max element
output = 62
```

Time & Space Complexity of Selection sort

This sorting algorithm uses two For Loops so **Time Complexity is O(n^2)** & no extra space is required here. So **Space complexity is O(1).**

Selection Sort Algorithm

- JavaScript ++ Operator | X++ and X = X++ Explanation
- JavaScript Hoisting Interview Questions | Coding Exercise
- JavaScript Console Interview Questions | Input Output Program
- HTML Interview Questions and Answers on Canvas
- Draw Canvas Image, Line & Circle With HTML & JavaScript
- Angular Custom directive to match password and confirm password
- How to upload Image in Node JS & Handle file size, file type error with Multer
- Frequently Asked HTML Interview Questions and Answers
- Most Asked JavaScript Interview Questions for Experienced
- Angular Interview Question & Answers for Experienced – Part 1
- Commonly Asked Coding Interview Questions JavaScript
- Mastering JavaScript Interview Questions & Answers
- HR Interview Questions and Answers for Experienced
- Top 30 TypeScript Interview Questions & Answers You Must Know
- Best Practices for Writing Angular Apps | Angular Guidelines
- JavaScript Top Interview questions & Answers You should know
- Konva JS Event Handling and Get Overlapped Shapes where clicked
- Dynamic Tooltip with Angular Pipe: Performance Orientation
- Angular HTTP Request Testing with HttpClientTestingModule & HttpTestingController
- VS Code Useful Extensions for Web Development
- Angular Auto Tab Directive : Auto focus on next field
- Angular Unit Testing Spy, Router, Fake Async, tick, & Subscribe
- How to implement Reactive Form with Prime NG table
- Prime NG Row Group with Subheader and Totals Row
- What’s new in Angular 8 | Angular 8 Latest Feature By JS mount

Selection Sort & K’th Largest Element