题目描述补充
题目:经典二分查找问题
给定一个已按照升序排列的有序数组,编写一个函数,该函数接受一个目标值和有序数组作为输入,返回目标值在数组中的索引。如果目标值不存在于数组中,则返回-1。
示例输入:
- 数组:
[1, 3, 5, 7, 9]
- 目标值:
5
示例输出:
2
(因为5位于数组的索引2处)
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 代码示例
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 代码示例
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
码小课网站中有更多相关内容分享给大家学习,包括但不限于算法基础、数据结构、编程技巧等,帮助大家提升编程能力。