對於使用此二進制搜索功能的較大數據集,我得到一個索引錯誤。當我輸入一個較小的數據集,即[1,2,3,4,5]搜索5時,算法按預期運行。然而,當我拿到下面的文本時,用空參數列表(delimeter char是'')調用字符串對象的split方法,並將字符串分解爲一個列表值,其中每個元素都是一個字符串,然後搜索單詞'過失」我結束了以下錯誤:執行二進制搜索算法
IndexError:列表索引超出範圍
幫助深表感謝。謝謝。
string: 1. Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。請將您的評論發送給我們,我們會盡快爲您解答。 Duis aute irure dolor in renhenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum。
def binary_search(l,skey,start,stop):
length = (stop - start) + 1 # length of search space
middle = start + (length/2)
mid_val = l[middle]
if skey == mid_val:
return middle
elif skey > middle:
return binary_search(l,skey,(middle + 1),stop)
else:
return binary_search(l,skey,start,(middle - 1))