我有一段代码,其中包含一些窗口警报消息。工作正常。但是,如果删除警报语句,程序将进入无限循环。对我来说这很奇怪。
有人可以帮助我确定代码问题吗?
function countSwaps(arr) {
let notVisited = {},swaps = 0;
for (let i = 0; i < arr.length; i++) {
notVisited[i] = true;
}
while (Object.keys(notVisited).length) {
alert("main pass");
let nextPos,currentPos = Object.keys(notVisited)[0];
while (arr[currentPos] !== parseInt(currentPos+1)) {
nextPos = arr[currentPos] - 1;
[arr[currentPos],arr[nextPos]] = [arr[nextPos],arr[currentPos]];
swaps+= 1;
alert("Swap " + arr[currentPos] + " and " + arr[nextPos] + "\n");
delete notVisited[nextPos];
}
delete notVisited[currentPos];
}
return swaps;
}
console.log(countSwaps([2,3,4,1,5]));