LeetCode #0 · 二分查找 · 时间复杂度分析

中等 数组 二分查找 递归
英文: Binary Search (Time Complexity)

题目描述:给定一个升序整型数组 arr 和目标值 target,以下递归函数返回目标值的索引,若不存在返回 -1。请分析该函数的时间复杂度。

int search(int start, int end, int target, int *arr) {
    if(start <= end) {
        int mid = start + (end - start) / 2;
        if (arr[mid] == target) return mid;
        else if (target > arr[mid]) return search(mid + 1, end, target, arr);
        else if (target < arr[mid]) return search(start, mid - 1, target, arr);
    }
    return -1;
}

函数签名: int search(int start, int end, int target, int *arr)

约束: 数组长度 n ≥ 1,元素升序。

要求: 分析时间复杂度,并理解二分查找的递归不变量。

🧪 阶段1 · 理解题目 & 暴力体验

认知目标: 手动执行一次二分查找,感受每次比较缩小一半搜索范围。

🔍 模拟二分查找

low=0 mid=2 high=5 比较次数=0

目标值: 7 (数组 [1,3,5,7,9,11])

❓ 问题

第一次比较后,搜索区间变为?