您好,很高興回答你的問題。
對於這個問題,通常有兩種解決方式:
遍歷
遍歷是最簡單的方式,即從第一個元素依次遍歷,知道找到你想要的元素:
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;
}
} }