2017-06-06 109 views
0

enter image description hereJavascript for for condition

我正在阅读可汗学院课程的算法。我在https://www.khanacademy.org/computing/computer-science/algorithms/insertion-sort/p/challenge-implement-insert

调用插入功能之后: *值和以前在阵列[0]到阵列[rightIndex],应以升序进行排序,并从数组存储在要素[0]至数组中的元素[rightIndex + 1]。为了做到这一点,插入功能需要通过将大于值的项目移动到右侧来为价值腾出空间。它应该从rightIndex开始,当它找到一个小于或等于值的项时,或者当它到达数组的开始时停止。一旦该函数腾出空间来实现价值,它就可以向数组写入值。

我的尝试是:

var insert = function(array, rightIndex, value) { 

var i = rightIndex; 
    for(array[i]> key ; 0; i--) { 

     array[i + 1] = array[i]; 
    } 
    array[i]= value; 

}; 

var array = [3, 5, 7, 11, 13, 2, 9, 6]; 

insert(array, 4, 2); 
println("Array after inserting 2: " + array); 

他们具体说了,他们希望中的for循环的条件,但我不知道该怎么做。

回答

2
var insert = function(array, rightIndex, value) { 
    // for(initial_value; condition; change the value for next iteration) 
    // && - returns true only when both are true. 
    for(var j = rightIndex; j >= 0 && array[j] > value; j--) { 
     array[j + 1] = array[j]; 
    } 
    array[j + 1] = value; 

}; 
+0

你能解释一下这个挑战所要求的吗?我已经读过100次这个算法问题,但它仍然没有意义。 rightIndex的目的是什么?这就像一个醉酒的人写这个。 – JellyKid

+1

哈哈。它基本上是说你想在数组中插入一个数字,所以你想要检查'数值'并将该数字与数组中的所有数字进行比较。一旦它达到一个大于你的'值'的数字,那么它会停止并将自己插入到数组中。 rightIndex的目的是从rightIndex开始,当它找到一个小于或等于value的项时停止。 –

+0

谢谢,我不知道你可以在js中做到这一点 – user61629