function insertionSort(arr) {
for (let i = 1, l = arr.length; i < l; i++) {
let insertionIndex = findInsertionIndex(arr, i);
shiftElements(arr, insertionIndex, i);
}
return arr;
}
function findInsertionIndex(arr, i) {
let j = i
for (let n = i; n >= 0; n--) {
if (arr[n] > arr[i]) {
j = n;
}
}
return j;
}
function shiftElements(arr, insertionIndex, i) {
const value = arr[i];
for(i; i > insertionIndex; i--){
arr[i] = arr[i-1];
}
arr[insertionIndex] = value;
}
Конечно, есть более короткий способ в одной функции с while. Реализация выше была написана в рамках обучения в Яндекс Практикуме.