#9565. 有序数组中的二分查找
有序数组中的二分查找
Problem: 有序数组中的二分查找
任务总览
| 任务名称 | 时间限制 | 内存限制 | 分数 |
|---|---|---|---|
| 二分查找定位 | 1 sec | 1024 MB | 5 |
题目描述
请在一个有序递增的数组中(数组中不存在相同元素),采用二分查找,找出值 x 所在的位置。如果 x 在数组中不存在,请输出 -1。
注意:位置从 1 开始计数。
输入格式
- 第一行:一个整数
n,表示数组的长度。 - 第二行:
n个递增的整数,表示数组的元素(,元素互不相同)。 - 第三行:一个整数
x,表示要查找的目标值。
输出格式
- 输出一个整数,表示
x在数组中的位置(从1开始编号),若不存在x,输出-1。
输入输出示例
输入示例 1
10
1 3 5 7 9 11 13 15 17 19
3
输出示例 1
2
题目解析
- 由于数组已排序且无重复值,适合使用二分查找算法,时间复杂度为 。
- 可采用递归或非递归方式实现,分别在左半区或右半区继续查找,直到找到目标值或确定不存在。
数据范围
- 数组长度
- 每个数组元素为不超过 的正整数
- 查找目标
x的取值范围为