二分查找法: 對於有序的數列, 才能使用二分查找法。 ()假設有一個數組長度爲n,開始查找範圍爲[0,n-1],從一個數組的中間位置m,開始查找,如果這個數是,那我們就找到了,如果不是,比較要找的這個數和中間數的大小,如果大於中間的這個數,就從中間這個數+1的位置的右側查找[m+1, n-1],又取這個區間中間的, 如此查找,小於也是一樣的邏輯,直到找到爲止。接下來我就用js實現這段邏輯。
/*
* arr 要找尋的數組
* target 要查找的目標
**/
function binarySearh(arr, target) {
var n = arr.length;
var l = 0,r = n-1; // 聲明查找兩個邊界, 在[l, r] 兩個區間中尋找target
while (l <= r) {
// 中間位置索引
var mid = l + parseInt((r-l)/2);
if (target === arr[mid]) {
return mid;
} else if (target > arr[mid]) {
l = mid +1; // 在區間[mid +1, r] 中尋找
} else if (target < arr[mid]) {
r = mid - 1; // 在區間[l, mid - 1] 中尋找
}
}
return -1;
}
如有錯誤請指正!!!