可汗学院-挑战:实现插入排序
Khan Academy - Challenge: Implement insertion sort
我正在可汗学院学习JavaScript的算法课程。我写了这样的代码:
var insert = function(array, rightIndex, value) {
for(var i = rightIndex;
i > 0 && array[i-1] > value;
i--) {
array[i] = array[i-1];
}
array[i] = value;
};
var insertionSort = function(array) {
for (var st = 1; st < array.length; st++) {
insert(array, st, array[st]);
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
println("Array after sorting: " + array);
Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);
现在我想知道这里出了什么问题,我不能进入下一关…请帮助。:)
to all:)这是正确的解决方案。你不能改变已经写好的东西。
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;
};
var insertionSort = function(array) {
for (var st = 1; st < array.length; st++) {
insert(array, st - 1, array[st]);
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
println("Array after sorting: " + array);
Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);
问题不在于你给出了错误的答案,而在于你没有给出他们期望的编码解决方案。
在这个特殊的问题上,在右上角有一个"提示"部分。如果你点击这是什么?
链接。此提示显示了成功完成此操作所需的代码步骤,但这不是完整的答案。空白处是零件你需要自己弄清楚。如果你看到有颜色空格,您在两个相同颜色的空格中输入的值必须为完全相同
在他们的提示中,他们希望初始var、for循环和数组使用相同的值。示例:替换foo.
var foo;
for(foo = -----; -----; ----){
array[foo + 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;
};
var insertionSort = function (unsortedList) {
var len = unsortedList.length;
for(var i = 0; i < len; i++) {
var tmp = unsortedList[i]; //Copy of the current element.
/*Check through the sorted part and compare with the
number in tmp. If large, shift the number*/
for(var j = i - 1; j >= 0 && (unsortedList[j] > tmp); j--) {
//Shift the number
unsortedList[j+1] = unsortedList[j];
}
//Insert the copied number at the correct position
//in sorted part.
unsortedList[j+1] = tmp;
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
println("Array after sorting: " + array);
你的程序是正确的,但可能是语法错误:use Console.log("Array after sorting: " + Array);而不是:println("排序后的数组:" + Array);在java Script中,没有任何println方法用于输出。
this works…
var insert = function(array, rightIndex, value) {
for (var i = rightIndex; i>=0 && array[i] > value; i --) {
array[i+1] = array[i];
}
array[i+1] = value;
};
相关文章:
- 如何在javascript中实现映射或排序集
- 堆排序实现进行了太多比较
- 如何根据创建日期对对象进行排序,以插入Meteor的高图表
- 使用可排序项实现轮班点击
- 插入按字母顺序、javascript或jquery排序的新列表
- 有没有更有效的方法在 JavaScript 中执行二进制插入排序
- 在 Javascript 中实现合并排序
- ractive js :与模板中键部分关联的嵌套对象列表的直接 DOM 插入排序/排序 #each 顺序
- 实现插入功能
- React.js-实现组件排序
- 如何实现一个排序,但随机列表与javascript/jquery
- Javascript插入排序错误
- 可汗学院-挑战:实现插入排序
- 在区域四叉树中实现插入/删除/查询范围
- 迭代地实现归并排序
- 重置“插入排序顺序”;用于主干收集
- D3.js尝试实现可排序的SVG表
- 在javascript中排序值时确定受影响的行,shell排序,插入排序
- 插入排序最后一项未定义
- 如何在jQuery中实现可排序的播放列表