头歌模拟题:二分法进行数字查找
时间: 2024-02-03 18:14:22 浏览: 134
好的,让我们来模拟一个二分法进行数字查找的例子。
假设我们有一个有序数组 `arr`,长度为 `n`,我们想要在其中查找一个数字 `target`。
首先,我们需要定义一个二分函数 `binary_search`,它接收三个参数:数组 `arr`,要查找的数字 `target`,以及数组的左右边界 `left` 和 `right`。
```python
def binary_search(arr, target, left, right):
# TODO: 在 arr[left:right+1] 中查找 target,并返回它的下标。
```
然后,我们需要在函数内部实现二分查找的逻辑。具体来说,我们需要不断将数组一分为二,直到找到目标数字或者确认目标数字不存在为止。
```python
def binary_search(arr, target, left, right):
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
```
最后,我们可以调用 `binary_search` 函数来测试它的效果:
```python
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target, 0, len(arr)-1)
print(result) # 输出 2
```
在这个例子中,我们成功地找到了数字 `5` 在数组 `arr` 中的下标为 `2`。
阅读全文