当前位置: 面试刷题>> 二分查找(经典算法150题)


### 题目描述补充 **题目:二分查找算法实现** 给定一个已按照升序排列的有序数组(`arr`)和一个目标值(`target`),请编写一个函数来实现二分查找算法。二分查找算法的基本思想是:在有序数组中,通过不断将数组分成两半,判断目标值可能存在的区间,从而逐步缩小查找范围,直到找到目标值或确定目标值不存在于数组中。 ### 示例 假设数组 `arr = [1, 3, 5, 7, 9, 11]`,目标值 `target = 7`,函数应该返回目标值在数组中的索引 `3`。 如果目标值不存在于数组中,则返回 `-1`。 ### PHP 代码示例 ```php function binarySearch($arr, $target) { $left = 0; $right = count($arr) - 1; while ($left <= $right) { $mid = $left + floor(($right - $left) / 2); if ($arr[$mid] == $target) { return $mid; } elseif ($arr[$mid] < $target) { $left = $mid + 1; } else { $right = $mid - 1; } } return -1; } // 示例 $arr = [1, 3, 5, 7, 9, 11]; $target = 7; echo binarySearch($arr, $target); // 输出: 3 ``` ### Python 代码示例 ```python def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = left + (right - left) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1 # 示例 arr = [1, 3, 5, 7, 9, 11] target = 7 print(binary_search(arr, target)) # 输出: 3 ``` ### JavaScript 代码示例 ```javascript function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (arr[mid] === target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; } // 示例 const arr = [1, 3, 5, 7, 9, 11]; const target = 7; console.log(binarySearch(arr, target)); // 输出: 3 ``` 在以上示例中,我们展示了如何在 PHP、Python 和 JavaScript 中实现二分查找算法。这些示例都遵循了二分查找算法的核心逻辑,并通过不断缩小查找范围来寻找目标值。如果目标值存在于数组中,则返回其索引;如果不存在,则返回 `-1`。
推荐面试题