发一下二分法查找的例子代码
时间: 2023-09-25 20:06:59 浏览: 91
### 回答1:
以下是一个实现二分法查找的例子代码:def binary_search(list, item):
low = 0
high = len(list)-1
while low <= high:
mid = (low + high)
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
### 回答2:
二分法也被称为二分查找,它是一种在有序数组中查找目标值的算法。下面是一个简单的二分法查找的例子代码:
```python
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
# 测试例子
nums = [1, 3, 5, 7, 9]
target = 5
result = binary_search(nums, target)
print(f"目标值在数组中的索引为:{result}")
```
在这个例子中,我们定义了一个`binary_search`函数来实现二分查找。它接受两个参数,一个有序的数组`arr`和目标值`target`。首先,我们将`low`初始化为数组的第一个元素的索引,将`high`初始化为数组的最后一个元素的索引。然后,我们使用一个循环来不断缩小查找的范围,直到找到目标值或者范围为空。在每一次循环中,我们计算中间元素的索引`mid`,并与目标值比较。如果中间元素等于目标值,我们就找到了目标值,并返回其索引。如果中间元素小于目标值,说明目标值可能在中间元素的右边,我们将`low`更新为`mid + 1`。如果中间元素大于目标值,说明目标值可能在中间元素的左边,我们将`high`更新为`mid - 1`。如果循环结束时仍然没有找到目标值,我们返回-1表示目标值不在数组中。
在测试例子中,我们创建了一个有序数组`nums`,并设置目标值为5。我们调用`binary_search`函数来查找目标值在数组中的索引,并打印输出结果。在这个例子中,目标值5的索引为2,所以输出结果为`目标值在数组中的索引为:2`。
### 回答3:
二分法,也叫二分查找,是一种在有序数组中查找目标元素的算法。
下面是一个使用二分法查找的例子代码:
```python
def binary_search(arr, target):
left = 0
right = len(arr) - 1
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
# 示例
arr = [1, 3, 5, 7, 9, 11, 13, 15]
target = 9
result = binary_search(arr, target)
if result != -1:
print("目标元素在数组中的索引为", result)
else:
print("目标元素不在数组中")
```
以上代码实现了一个二分法查找的函数`binary_search`,使用`left`和`right`两个指针来确定待搜索区间,每次取中间的元素`mid`与目标元素进行比较,通过调整`left`和`right`的值来缩小搜索范围。最终如果找到目标元素,则返回其索引,否则返回-1表示未找到。
在给定的有序数组`arr`中查找目标元素`target`,并打印结果。
对于上述示例,目标元素9在数组中的索引为4。
阅读全文