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


题目描述补充

题目:经典二分查找问题

给定一个已按照升序排列的有序数组,编写一个函数,该函数接受一个目标值和有序数组作为输入,返回目标值在数组中的索引。如果目标值不存在于数组中,则返回-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

码小课网站中有更多相关内容分享给大家学习,包括但不限于算法基础、数据结构、编程技巧等,帮助大家提升编程能力。

推荐面试题