二分搜索法:
也稱折半搜索,是一種在有序數組中查找特定元素的搜索算法。
實現步驟:
1. 首先從數組中間開始查找對比,若相等則找到,直接返回中間元素的索引。
2. 若查找值小於中間值,則在小於中間值的那一部分執行步驟1的操作。
3. 若查找值大於中間值,則在大於中間值的那一部分執行步驟1的操作。
4. 否則,返回結果為查不到,返回-1。
方法一:
function binary_search1(arr, key) { var low = 0; var high = arr.length - 1; while (low <= high) { var mid = parseInt((low + high) / 2); if (key === arr[mid]) { return mid; } else if (key < arr[mid]) { high = mid + 1; } else if (key > arr[mid]) { low = mid - 1; } else { return -1; } } }
var arr = [1,2,3,4,5,6,7,8];
console.log(binary_search1(arr, 3));
方法二:
function binary_search2 (arr, low, high, key) { if (low > high) { return -1; } var mid = parseInt((low + high) / 2); if (key === arr[mid]) { return mid; } else if (key < arr[mid]) { high = mid - 1; return binary_search2(arr, low, high, key); } else if (key > arr[mid]) { low = mid + 1; return binary_search2(arr, low, high, key); } }
var arr = [1,2,3,4,5,6,7,8];
console.log(binary_search2(arr, 0, 7, 3));