采用二分法从以下列表中查找元素5 [1,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]用python
时间: 2023-09-30 14:06:26 浏览: 117
可以使用如下代码实现二分查找:
```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 = [1,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"元素 {target} 在列表中的索引为 {result}")
else:
print(f"元素 {target} 不在列表中")
```
输出结果为:
```
元素 5 在列表中的索引为 2
```
相关问题
采用二分法从以下列表中查找元素5 [1,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]
首先,将列表排序,得到[-5, -2, 1, 1, 1, 4, 5, 8, 25, 25, 27, 28, 45, 47, 52, 54, 56, 58, 59, 23125]。然后,使用二分法查找元素5。
1. 将列表分成两个部分,左侧为[-5, -2, 1, 1, 1, 4, 5, 8, 25, 25],右侧为[27, 28, 45, 47, 52, 54, 56, 58, 59, 23125]。
2. 由于5比中间值25小,因此在左半部分继续查找。
3. 将左半部分分成两个部分,左侧为[-5, -2, 1, 1, 1, 4, 5],右侧为[8, 25, 25]。
4. 由于5比中间值5小,因此在左半部分继续查找。
5. 将左半部分分成两个部分,左侧为[-5, -2, 1, 1],右侧为[4, 5]。
6. 由于5比中间值4大,因此在右半部分继续查找。
7. 将右半部分分成两个部分,左侧为[8, 25],右侧为[25, 27, 45, 47, 52, 54, 56, 58, 59, 23125]。
8. 由于5比中间值25小,因此在左半部分继续查找。
9. 将左半部分分成两个部分,左侧为[8],右侧为[25]。
10. 由于5比中间值8大,因此在右半部分继续查找。
11. 将右半部分分成两个部分,左侧为[25, 27, 45, 47, 52, 54, 56, 58, 59],右侧为[23125]。
12. 由于5比中间值59小,因此在左半部分继续查找。
13. 将左半部分分成两个部分,左侧为[25, 27, 45, 47, 52, 54, 56],右侧为[58, 59]。
14. 由于5比中间值56小,因此在左半部分继续查找。
15. 将左半部分分成两个部分,左侧为[25, 27, 45, 47, 52, 54],右侧为[56]。
16. 由于5比中间值54小,因此在左半部分继续查找。
17. 将左半部分分成两个部分,左侧为[25, 27, 45, 47, 52],右侧为[54]。
18. 由于5比中间值52小,因此在左半部分继续查找。
19. 将左半部分分成两个部分,左侧为[25, 27, 45, 47],右侧为[52]。
20. 由于5比中间值47大,因此在右半部分继续查找。
21. 将右半部分分成两个部分,左侧为[52, 54, 56, 58, 59],右侧为[23125]。
22. 由于5比中间值58小,因此在左半部分继续查找。
23. 将左半部分分成两个部分,左侧为[52, 54, 56],右侧为[58, 59]。
24. 由于5比中间值56小,因此在左半部分继续查找。
25. 将左半部分分成两个部分,左侧为[52, 54],右侧为[56]。
26. 由于5比中间值54小,因此在左半部分继续查找。
27. 将左半部分分成两个部分,左侧为[52],右侧为[54]。
28. 由于5等于中间值52,因此找到了元素5。
采用二分法从以下列表中查找元素5 [1,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]pythone
好的,可以使用以下代码实现二分查找:
```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,23125,5,59,58,54,52,28,1,56,8,47,4,25,-2,25,27,45,1,-5]
target = 5
result = binary_search(arr, target)
if result != -1:
print("元素在列表中的索引为", result)
else:
print("元素不在列表中")
```
输出结果为:
```
元素在列表中的索引为 2
```
阅读全文