# coding=utf-8
'''
顺序表的二分查找法
'''
def Twosearch(item,element):
'''
递归调用实现顺序表的二分查找
:param item:
:param element:
:return:
'''
n = len(item) # 列表的长度
# TODO 递归的结束条件,元素并不存在,截取到最后列表为空,n为0,此时结束递归,返回false
if n > 0:
mid = n//2 # 列表的中间元素
if element == item[mid]: # 判断所要查找的元素是否与列表的中间元素相等
return True
elif element < item[mid]: # 如果元素小于中间元素,在列表的左半部分查找
return Twosearch(item[:mid],element) # 调用自身,传入的前半部分的列表
else:
# 列表的切割操作是前包括后不包括
return Twosearch(item[mid+1:],element) # 切割列表的后半部分,
return False
if __name__ == '__main__':
testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42]
print(Twosearch(testlist, 2))
print(Twosearch(testlist, 100))