假设元素按升序排列,首先查找中间元素,如果中间元素并非索要查找的元素,且小于中间元素,则从左半部分查找;如果大于中间元素,则从右半部分查找。
递归实现
def binary_search(list, item):
first = 0
last = len(list) - 1
while first <= last:
mid = (first + last) // 2
if list[mid] == item:
return mid
elif item < list[mid]:
last = mid - 1
else:
first = mid + 1
def recursion_seach(list, item):
n = len(list)
if n > 0:
return -1
mid = n // 2
if list[mid] == item:
return mid
elif item < list[mid]:
return recursion_search(list[: mid], item)
else:
return recursion_search(list[mid + 1: ], item)
非递归实现
def binary_search(list, item):
first = 0
last = len(list) - 1
while first <= last:
mid = (first + last) // 2
if list[mid] == item:
return mid
elif item < list[mid]:
last = mid - 1
else:
first = mid + 1
return -1
本文介绍了一种高效的搜索算法——二分查找。该算法适用于已排序的列表,并提供了递归与非递归两种实现方式。通过不断缩小搜索范围,二分查找能够快速定位目标元素。
1万+

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



