2017-06-06 108 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