<pre name="code" class="python"># _*_ coding: utf-8 _*_
#二分查找
def BinarySearch(lists, left, right, key, tag, mid = 0, found = False):
count = len(lists[left:right+1]) + 1
if tag == 0:
mid = count // 2
elif tag == 1:
mid += count // 2
else:
mid -= count // 2
if lists[mid] == key:
found = True
else:
while left < right:
if lists[mid] > key:
right = mid
tag = 2
return BinarySearch(lists, left, right, key, tag, mid, found)
elif lists[mid] < key:
left = mid + 1
tag = 1
return BinarySearch(lists, left, right, key, tag, mid, found)
if found:
print key, 'found, index is ', mid
elif left >= right and not found:
print key, 'is not found in lists'
L = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0, 11):
BinarySearch(L, key = i, left = 0, right=len(L)-1, tag = 0)
递归实现二分查找(Python2.7)
最新推荐文章于 2024-03-05 10:30:00 发布
本文详细介绍了二分查找算法的实现原理及应用。通过递归方式实现二分查找,并使用 Python 代码展示整个查找过程。从查找中间元素开始,根据比较结果调整查找范围,直至找到目标元素或确定元素不存在于列表中。

72

被折叠的 条评论
为什么被折叠?



