dlb*_*b24 6 javascript algorithm
我目前正在使用Khan Academy的算法课程,该课程使用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;
};
Run Code Online (Sandbox Code Playgroud)
这样工作正常,并按预期执行,但它没有通过KA的自动标记系统.他们给出了代码指南,并建议如下:
for(var ____ = _____; ____ >= ____; ____) {
array[____+1] = ____;
}
____;
Run Code Online (Sandbox Code Playgroud)
有谁知道如何重复我的代码以符合这些标准?
我有一个与您类似的解决方案,并且没有通过他们的自动化测试。如果您稍后查看“挑战:实现插入排序”,它们实际上会继续为您实现该功能:
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;
};
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您不需要在for循环之前声明j(稍后使用)的原因是因为JavaScript没有块作用域(TIL):请参见此处
小智 1
无需返回数组,因为它是通过引用传递的。只需将每个元素向右移动 1 即可。最后一条语句只是将值插入到正确的位置。
var insert = function(array, rightIndex, value) {
for (var i = rightIndex; array[i] >= value; i--) {
array[i+1] = array[i];
}
array[rightIndex] = value;
};
Run Code Online (Sandbox Code Playgroud)