Open Mardanjan opened 4 years ago
var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86] /** * 递归实现: * 把数组一分为二,如果分割点的值等于要找的值就直接返回坐标 * 如果分割点的值小于要找的值,则在分割点右边的数组里找 * 如果分割点的值大于要找的值,则在分割点左边的数组里找 */ // 递归 // function binary_search(arr, key, low, high) { // if (low > high) { // return -1 // } // var mid = parseInt((low + high) / 2) // if (arr[mid] === key) { // return mid // } else if (arr[mid] > key) { // return binary_search(arr, key, 0, mid -1) // } else if (arr[mid] < key) { // return binary_search(arr, key, mid + 1, high) // } // } /** * 蛮力法 * */ function binary_search(arr, key) { var low = 0, high = arr.length - 1 while (low <= high) { var mid = parseInt( (low + high) / 2) if (arr[mid] === key) { return mid } else if (arr[mid] < key) { low = mid + 1 } else if (arr[mid] > key) { high = mid - 1 } else { return -1 } } } // 蛮力法参数 // console.log(binary_search(arr, 2)) // 递归参数 // qwe(binary_search(arr, 5, 0, 13))
奇怪了,蛮力法找不到时返回了undefined。。。不应该是-1吗?