Selection sort is a basic sorting algorithm. It's an in-place comparison sort. It's generally considered to be not performant enough, but does have some use cases due to its simplicity. The complexity of selection sort is `O(n2)`

. It works by taking an index and making passes on the array looking for the next lowest value.

Let's use these values: `[5, 99, 65, 100, 4, 12]`

We start with `5`

and pass through the entire array looking for a number that is less than `5`

. If we find one, we store it, and continue searching for smaller numbers, but now comparing to the value we just stored. This ensures that after a pass we have found the next lowest number. Then we swap it in order to put it in the correct position.

On the first pass we would compare `5`

to each number and not until we got to `4`

would we find a lower number, which we would store. We would then compare `4`

to `12`

, and the sweep would be complete. `4`

would then be swapped with `5`

in order to put `4`

in the correct position. We would then do the same pattern with `99`

, which would bring `5`

to the second position, and continue making passes for each value.

Final sort: `[4, 5, 12, 65, 99, 100]`

Here's the implementation:

```
function selectionSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
let index = i
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[index]) {
index = j
}
}
if (index !== i) {
let temp = arr[index]
arr[index] = arr[i]
arr[i] = temp
}
}
}
```