When the array is already sorted, insertion sort makes only one comparison per element.
For random arrays, insertion sort requires quadratic time.
When the array is sorted in reverse order, insertion sort must shift each element to the beginning of the array.
function insertionSort(arr) {
const n = arr.length;
for (let i = 1; i < n; i++) {
// Store current element to be inserted
let key = arr[i];
let j = i - 1;
// Move elements greater than key
// to one position ahead
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
// Insert the key at correct position
arr[j + 1] = key;
}
return arr;
}