2016 - 2024

感恩一路有你

python二分查找算法找出数字位置

浏览量:3975 时间:2023-10-23 13:52:02 作者:采采

一、原理

二分查找算法是一种分治思想的典型应用,它的核心思想是将查找范围不断缩小,直到找到目标或者确定不存在。具体步骤如下:

1. 将有序数组按照中间元素进行划分,得到左右两个子数组。

2. 如果中间元素与目标相等,则查找成功,返回下标。

3. 如果中间元素大于目标,则在左子数组中继续查找。

4. 如果中间元素小于目标,则在右子数组中继续查找。

5. 重复以上步骤,直到查找范围为空,表示目标不存在。

二、实现步骤

下面是Python中二分查找算法的实现步骤:

1. 定义一个函数binary_search,接收三个参数:有序数组arr、目标数字target和搜索范围的起始位置start。

2. 判断搜索范围是否为空,如果为空则返回-1,表示目标不存在。

3. 计算搜索范围的中间索引mid。

4. 如果中间元素等于目标数字,返回mid。

5. 如果中间元素大于目标数字,递归调用binary_search,在左子数组中继续查找,搜索范围为start到mid-1。

6. 如果中间元素小于目标数字,递归调用binary_search,在右子数组中继续查找,搜索范围为mid 1到end。

7. 重复以上步骤,直到找到目标或者确定不存在。

三、代码实例

下面是一个示例代码,演示了如何使用Python实现二分查找算法:

```python

def binary_search(arr, target, start0):

end len(arr) - 1

if start > end:

return -1

mid (start end) // 2

if arr[mid] target:

return mid

elif arr[mid] > target:

return binary_search(arr, target, start, mid-1)

else:

return binary_search(arr, target, mid 1, end)

arr [1, 3, 5, 7, 9, 11]

target 7

result binary_search(arr, target)

if result ! -1:

print("目标数字在数组中的位置为", result)

else:

print("目标数字不存在于数组中")

```

以上代码会输出"目标数字在数组中的位置为 3",表示目标数字7在数组arr中的索引位置为3。

结论:

Python中的二分查找算法是一种高效的搜索方法,适用于有序数组。通过将查找范围不断缩小,可以快速定位目标数字在数组中的位置。在实际应用中,可以根据自己的需要进行相应的调整和扩展,以满足不同的场景需求。

Python 二分查找算法 有序数组 代码实例

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。