Python实现二分查找法(折半查找法)
Mkdir700 • 2019 年 12 月 06 日
Loading...
下学期会学习算法,知乎上找到一本书,感觉还不错,值得提前学习学习
《你也能看得懂的 Python 算法书》
## 二分查找(折半查找法) ##
适用于已排好序的数组,对于较短的数组,使用一个一个的遍历查找与**二分查找**没有较大区别,但数组长度过长,使用二分查找更为高效
## 例题 ##
对已排序的数列`[1,3,5,6,7,8,13,14,15,17,18,24,30,43,56]` 使用二分查找指定元素的索引
## 代码 ##
```python
class Binary_search(object):
def handler(self,nums, val):
# 假如我想寻找13的位置
# 定义头指针和尾指针
head, tail = 0, len(nums) + 1
while tail - head != 1:
# 折半折半,先来折一半
mid = (head + tail) // 2
if nums[mid] > val:
tail = mid
else:
head = mid
# 判断最后一个值是否与目标值相等
if nums[head] == val:
print(head)
else:
print('不存在')
nums = [1, 3, 5, 6, 7, 8, 13, 14, 15, 17, 18, 24, 30, 43, 56]
s = Binary_search()
s.handler(nums, 6)
```