请问二分法用python怎么写
时间: 2023-03-13 11:42:52 浏览: 100
二分法用python写起来很简单,只需要一个while循环,一个中间变量和两个比较变量就可以了,如下所示: def binary_search(arr, x): low = 0 high = len(arr) - 1 while low <= high: mid = (low + high) // 2 if arr[mid] < x: low = mid + 1 elif arr[mid] > x: high = mid - 1 else: return mid return -1
相关问题
用python写二分法
以下是用Python编写的二分法代码示例:
```python
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
arr = [ 2, 3, 4, 10, 40 ]
x = 10
result = binary_search(arr, x)
if result != -1:
print("元素在索引", str(result))
else:
print("元素不在数组中")
```
该代码实现了一个简单的二分搜索算法,其中`arr`是待搜索的排序数组,`x`是要查找的元素。该函数返回元素在数组中的索引,如果元素不存在,则返回-1。在while循环中,我们通过计算中点来不断缩小搜索区间,直到找到目标元素或搜索区间为空为止。
二分法及Python实现
二分法(Binary Search)是一种常见的查找算法,也叫折半查找。它要求待查找的序列必须有序。每次取中间位置的值与待查关键字进行比较,如果中间位置的值比待查找的值大,则在序列的左半部分继续执行查找;如果中间位置的值比待查找的值小,则在序列的右半部分继续查找,直到查找到为止。
Python实现二分查找可以使用以下代码:
```python
def binary_search(arr, target):
left, right = 0, 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`为待查找的有序序列,`target`为待查找的关键字。这个函数返回关键字在序列中的索引,如果没有找到则返回-1。
阅读全文