1. 程式人生 > >使用Python實現列表元素的二分查詢

使用Python實現列表元素的二分查詢

# 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))