请帮我写这道题的代码:给定一个有序正整数数组和一个要查找的目标数。要求给出要查找目标数在给定数组中第一次(或最后一次)出现的索引号(数组下标),没有查找到时输出-1。
时间: 2023-06-08 14:03:45 浏览: 157
数组a中已存有互不相同的10个整数从键盘输入一个整数,找出与该值相同的数组元素下标。 (如果没找到,输出“没找到”).c
5星 · 资源好评率100%
好的,这是一个简单的二分查找问题,以下是代码实现:
```python
def binary_search(arr, target, first=True):
left, right = 0, len(arr) - 1
res = -1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
res = mid
if first:
right = mid - 1
else:
left = mid + 1
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return res
# 在有序数组 arr 中查找 target 第一次出现的位置
def find_first_position(arr, target):
return binary_search(arr, target, True)
# 在有序数组 arr 中查找 target 最后一次出现的位置
def find_last_position(arr, target):
return binary_search(arr, target, False)
```
如果要查找 target 最后一次出现的位置,只需要修改 `find_first_position` 函数为 `find_last_position` 即可。
阅读全文