当前位置: 面试刷题>> 经典二分查找问题 (经典算法题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
```
**码小课**网站中有更多相关内容分享给大家学习,包括但不限于算法基础、数据结构、编程技巧等,帮助大家提升编程能力。