js实现二分搜索法
二分搜索法:
也称折半搜索,是一种在有序数组中查找特定元素的搜索算法。
实现步骤:
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));