0

在此处输入图像描述

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

调用插入函数后: * value 和之前在array[0] 到array[rightIndex] 中的元素,应该按升序排序并存储在从array[0] 到array[rightIndex+1] 的元素中。为了做到这一点,插入函数需要通过将大于 value 的项目向右移动来为 value 腾出空间。它应该从 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 循环中的条件,但我不知道该怎么做。

4

1 回答 1

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; 

};
于 2017-06-06T19:54:36.800 回答