折半查找python
时间: 2023-11-04 08:57:18 浏览: 140
折半查找是一种常用的查找算法,用于在有序数组中快速定位目标元素。下面是折半查找的Python实现代码:
```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
```
这段代码首先初始化low和high两个指针,分别指向数组的首尾元素。然后使用一个循环来进行查找,每次取low和high的中间位置mid,将mid位置的元素与目标元素进行比较,根据比较结果来更新low和high的值。如果找到目标元素,则返回其在数组中的索引;如果未找到,则返回-1。
相关问题
折半查找Python
折半查找(二分查找)是一种在有序数组中查找特定元素的搜索算法。它的搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果要查找的元素大于中间元素,则在数组的后半部分继续查找;如果要查找的元素小于中间元素,则在数组的前半部分继续查找。通过每次比较将搜索范围缩小一半,最终找到目标元素或者确定目标元素不存在。
以下是一个使用Python实现折半查找的例子:
```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
# 示例使用
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print("元素在索引", result)
else:
print("元素不在数组中")
```
这个例子中,我们定义了一个`binary_search`函数来执行折半查找。它接受一个有序数组`arr`和要查找的目标元素`target`作为参数。函数使用`low`和`high`两个指针来表示当前搜索范围的左右边界,然后在循环中不断更新这两个指针,直到找到目标元素或者确定目标元素不存在。
折半查找 python
折半查找,也称为二分查找,是一种在有序数组中查找特定元素的算法。它的基本思想是将数组分成两部分,通过比较中间元素和目标元素的大小关系,来确定目标元素在哪一部分中,然后再在该部分中继续查找,直到找到目标元素或者确定目标元素不存在为止。折半查找的时间复杂度为O(log n),比顺序查找的时间复杂度O(n)更快。
在Python中,可以使用以下代码实现折半查找:
```
a = [-3, 4, 7, 9, 13, 45, 67, 89, 100, 180] # 有序数组
low = 0 # 数组上界
high = len(a) - 1 # 数组下界
m = 13 # 要查找的元素
k = -1 # 记录下标
while low <= high:
mid = (low + high) // 2 # 取中间位置
if m < a[mid]:
high = mid - 1 # 在左半部分查找
else:
if m > a[mid]:
low = mid + 1 # 在右半部分查找
else:
k = mid # 找到目标元素
break
if k >= 0:
print("m = %d, index = %d" %(m, k))
else:
print("Not be found!")
```
阅读全文