如何解决我使用了一个表达式来减少 javascript 中的 for 循环,但它不起作用
在我的 shell 排序代码中,我使用了一个表达式来递减第一个 for 循环,但它似乎不起作用,这就是我的循环无限运行的原因,有人可以解释为什么递减表达式不起作用吗?。这是代码.....
const shellSort = function (arr) {
let gap;
for (gap = Math.floor(arr.length / 2); gap >= 1; Math.floor(gap / 2)) {
for (let j = gap; j < n; j++) {
for (let i = j - gap; i >= 0; i - gap) {
if (arr[i + gap] > arr[i]) break;
else [arr[i],arr[i + gap]] = [arr[i + gap],arr[i]];
}
}
}
return arr;
};
解决方法
两个循环步骤都不正确,你不能只是
Math.floor(gap / 2)
因为你的意思是
gap = Math.floor(gap / 2)
同样适用于 i
循环。
此外,n
在那里未定义。
您的代码已更正
var shellSort = function (arr) {
let gap;
for (gap = Math.floor(arr.length / 2); gap >= 1; gap = Math.floor(gap / 2)) {
for (let j = gap; j < arr.length; j++) {
for (let i = j - gap; i >= 0; i = i - gap) {
if (arr[i + gap] > arr[i]) break;
else [arr[i],arr[i + gap]] = [arr[i + gap],arr[i]];
}
}
}
return arr;
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。