实现插入功能
Implementing Insert Function
我目前正在学习可汗学院的算法课程,该课程使用JS教授基本算法。我目前正在实施插入排序,但发现了一个问题。
我们正在编写一个函数,该函数接收数组、开始索引和值,以便在正确的排序位置插入一个数字。我在这里写了上述函数:
var insert = function(array, rightIndex, value) {
for (var i = rightIndex; array[i] >= value; i--) {
array[i+1]=array[i];
array[i] = value;
}
return array;
};
这工作正常,并且按预期执行,但是它没有通过KA的自动标记系统。他们给出了代码的指导方针,并建议这样做:
for(var ____ = _____; ____ >= ____; ____) {
array[____+1] = ____;
}
____;
有谁知道我如何重申我的代码以符合这些标准?
我有一个和你类似的解决方案,但没有通过他们的自动测试。如果您稍后查看"挑战:实现插入排序",他们实际上会继续为您实现该功能:
var insert = function(array, rightIndex, value) {
for(var j = rightIndex; j >= 0 && array[j] > value; j--) {
array[j + 1] = array[j];
}
array[j + 1] = value;
};
顺便说一句,你不需要在for循环(稍后使用)之前声明j的原因是JavaScript没有块作用域(TIL):看这里
来自挑战:
尽管编写此函数的方法有很多种,但应以与提示代码一致的方式编写它。
它正在严格检查这一点:
var ___;
for(___ = ___; ___; ___) {
array[___ + 1] = ___;
}
因此,即使这两个替代项是正确的:
while(array[rightIndex] > value && rightIndex >= 0) {
array[rightIndex + 1] = array[rightIndex];
rightIndex--;
}
array[rightIndex + 1] = value;
尤其是这个几乎相同的(切换了 for 循环中的中间语句):
for(var i = rightIndex; array[i] > value && i >= 0; i--) {
array[i + 1] = array[i];
}
array[i + 1] = value;
这个答案是:
for(var i = rightIndex; i >= 0 && array[i] > value; i--) {
array[i + 1] = array[i];
}
array[i + 1] = value;
具有讽刺意味的是,它并不关心提示中无用的第一个变量......
var ___;
无需返回数组,因为它是通过引用传递的。只需将每个元素向右移动 1。最后一条语句只是在正确的位置插入值。
var insert = function(array, rightIndex, value) {
for (var i = rightIndex; array[i] >= value; i--) {
array[i+1] = array[i];
}
array[rightIndex] = value;
};
这里发布的大多数答案都是正确的。但这并不能让我们在可汗学院迈出下一步。这可能是因为可汗学院需要某个变量名称、缩进设置等。我不完全确定为什么它没有让我们进入下一步。
这段代码帮助我进入下一步:
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--) {
array[j + 1] = array[j];
}
array[j + 1] = value;
};
在我发现这段代码之前,我使用 i 而不是 j 作为变量名,但它并没有让我进入下一步。但这确实如此。
这已经奏效了:
var insert = function(array, rightIndex, value) {
var j = rightIndex;
for(var j = rightIndex; j >= 0 && array[j] > value; j--) {
array[j + 1] = array[j];
}
array[j + 1] = value;
- 将样式表插入iframe
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 如何动态插入jquery代码
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 全日历插件的功能无法正确插入 mysql 表
- CKEditor-自定义单词或短语插入功能
- 无法使用ajax序列化功能将图像插入数据库
- Azure节点:从SQL Azure Easy表插入功能访问表存储
- 实现插入功能
- 在日历和日期搜索功能中插入值
- 在路由器主干中插入定时器功能
- javascript中^(插入符号)符号的含义和功能
- Knockout寄存器插入了具有其他功能的元素
- 提交以编程方式插入的值并注册自动完成功能
- 很少有$timeout问题 - 从单击开始,在其中插入功能
- 流星,摩卡茶:测试插入功能
- 将文本插入文本区域后,功能会发生变化