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


### 题目描述补充 **题目:经典二分查找问题** 给定一个已按照升序排列的有序数组,编写一个函数,该函数接受一个目标值和有序数组作为输入,返回目标值在数组中的索引。如果目标值不存在于数组中,则返回-1。 **示例输入**: - 数组:`[1, 3, 5, 7, 9]` - 目标值:`5` **示例输出**: - `2`(因为5位于数组的索引2处) ### 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]; $target = 5; echo binarySearch($arr, $target); // 输出: 2 ``` ### Python 代码示例 ```python def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 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] target = 5 print(binary_search(arr, target)) # 输出: 2 ``` ### JavaScript 代码示例 ```javascript function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; while (left <= right) { let 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; } // 示例用法 let arr = [1, 3, 5, 7, 9]; let target = 5; console.log(binarySearch(arr, target)); // 输出: 2 ``` **码小课**网站中有更多相关内容分享给大家学习,包括但不限于算法基础、数据结构、编程技巧等,帮助大家提升编程能力。
推荐面试题