在一個已排序的數字陣列中查詢指定數字,這個JS程式碼怎麼寫?程式豬2018-02-23 18:29:28

您好,很高興回答你的問題。

對於這個問題,通常有兩種解決方式:

遍歷

遍歷是最簡單的方式,即從第一個元素依次遍歷,知道找到你想要的元素:

function findNum(key, list){

for(var i = 0; i < list。length; i++){

if(list[i] == key)

return i;

}

}

但是這種方式效率很差,最壞的情況下需要遍歷整個陣列。

二分查詢

二分查詢只適合已經排序好的陣列,思想是把要查詢的陣列分成兩半,取中間的數,如果大於,則要找的數在右邊,否則在左邊。一直重複這個工作,直到找到最後的數,二分查詢的效率很高。

function binary_search(arr, key) {

var low = 0,

high = arr。length - 1;

while(low <= high) {

var mid = parseInt((high + low) /2);

if(key == arr[mid]) {

return mid;

}

else if(key > arr[mid]) {

low = mid + 1;

}

else if(key < arr[mid]) {

high = mid -1;

} else {

return -1;

}

} }