我正在使用算法类Khan Academy for 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]);
现在我想知道这里有什么不对,我无法进入下一个级别...请帮助。 :)
答案 0 :(得分:8)
全部:)这是正确的解决方案。你无法改变已经写好的内容。
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]);
答案 1 :(得分:1)
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);
答案 2 :(得分:1)
问题不在于您给出了错误的答案,而在于您没有提供他们所期望的编码解决方案。
在此特定问题上,右上角有一个“提示”部分。如果单击这是什么?链接。
此提示显示成功完成此操作所需的代码 步骤,但这不是完整的答案。空的空白部分 您将需要弄清楚自己。 如果您看到彩色的 空白,您在两个相同颜色的空白中输入的值必须为 完全一样
在他们的提示中,他们希望初始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;
};
答案 3 :(得分:0)
您的程序是正确的但可能是语法错误: 使用 Console.log(“排序后的数组:”+数组); 代替: println(“排序后的数组:”+数组); 在java Script中没有任何方法println用于输出。
答案 4 :(得分:-2)
这有效......
public class asdf{
public static void main(){
int arr[] = new int[5];
System.out.println(arr);
}
}