Меню

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. Реализация выше была написана в рамках обучения в Яндекс Практикуме.