What do we understand about Selection Sort?

- Pretty simple once we understand the concept.
- Mutates original Array rather than returning a new Array
- Similar to Bubble Sort
- Both use 2 for-loops and also does the same standard swapping logic
- Outer loop holds the index pointer of the "smallest" comparison value
- Inner loop searches for a smaller value than the current "smallest" pointer value

- Get new smallest value's index
- Swap in the outer loop by index of new smallest value with current "smallest" pointer value.
- Time Complexity:
- Best : O(n^2)
- Average: O(n^2)
- Worst : O(n^2)

- Space Complexity:
- O(1)

```
function SelectionSort(arr) {
const arrayLength = arr.length;
for (let i = 0; i < arrayLength - 1; i++) {
let smallestIndexPointer = i;
for (let j = i + 1; j < arrayLength; j++) {
if (arr[j] < arr[smallestIndexPointer]>) {
smallestIndexPointer = j;
}
}
if (smallestIndexPointer !== i) {
[arr[i], arr[smallestIndexPointer]] = [arr[smallestIndexPointer], arr[i]];
}
}
return arr;
}
```

## Top comments (0)