1.二分查找首先被查找的序列是一个有序的。
2.明确序列的左右边界
3.找出序列中间的元素,判断如果是要查找的元素,返回元素
4.如果中间元素,大于或者小于查找的元素,那么改变左右边间,直到中间的数等于查找的元素。
python
def Two_selecter(find_num,nums):
#划定左右边界下标
left,right = 0,len(nums)-1
while left <= right:
#计算出折半值的下标
pivot = left + (right - left) // 2
#如果相等,就找到了,返回值
if nums[pivot] == find_num:
return nums[pivot]
#如果小于中间值,中间值的下标退一位,变成右边界
if find_num < nums[pivot]:
right = pivot - 1
#如果中间值小于查找值,中间值+1,变成左边界
else:
left = pivot + 1
return None
a = [1,2,3,4,5,6,7,8,9,10]
print(Two_selecter(2,a))