我正在阅读可汗学院的算法课程。我在https://www.khanacademy.org/computing/computer-science/algorithms/insertion-sort/p/challenge-implement-insert。
调用insert函数后: * value和先前在array [0]到array [rightIndex]中的元素应按升序排序,并存储在从array [0]到array [rightIndex + 1]的元素中。为了做到这一点,插入函数需要通过向右移动大于值的项来腾出空间。它应该从rightIndex开始,当它找到一个小于或等于value的项时,或者当它到达数组的开头时停止。一旦函数为值提供了空间,它就可以将值写入数组。
我的尝试是:
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循环中有条件,但我不知道该怎么做。
答案 0 :(得分: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;
};