На JavaScript реализована сортировка массива вставками:
const sort = (arr) => {
let compCounter = 0; // счетчик сравнений
let movementCounter = 0; // счетчик перемещений элементов
const arrLength = arr.length;
for (let i = 1; i < arrLength; i++) {
for (let j = i; j > 0; j--) {
if (arr[j - 1] > arr[j]) {
const temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
movementCounter += 3;
}
compCounter += 1;
}
}
console.log('Количество сравнений: ', compCounter);
console.log('Количество перемещений: ', movementCounter);
};
Если происходит перемещение элементов, то счетчик увеличивается на 3, потому что происходит 3 операции с элементами.
Для массива с тысячью элементов, получаются следующие усреденные результаты:
Количество сравнений: 4950 (всегда одинаково)
Количество перемещений: 7896 (плавает в районе 6000-8000).
Вопрос: правильно ли я считаю количество перемещений?