0
這就是我所做的,但是這隻能找到列表中的一個項目我想打印出項目36的兩個索引 請幫助這是我迄今爲止所做的 如果我的方式公佈這還是我的問題是不清楚我提前道歉 [代碼]使用二進制搜索在一個列表中找到多個項目
def main():
mylist=[]
for i in range(20):
mylist.append(i*3)
mylist.append(36)
mylist.sort()
print mylist
binarySearch(mylist,0,len(mylist),36)
def binarySearch(thelist,lower,upper,item):
if upper<lower:
print 'item not in the list'
return
middle=(lower+upper)/2
if thelist[middle]<item:
lower=middle+1
binarySearch(thelist,lower,upper,item)
elif thelist[middle]>item:
upper=middle-1
binarySearch(thelist,lower,upper,item)
else:
print 'the item was found at index ',thelist[middle],middle
return
main()
這聽起來像你試圖找到排序數組中的一系列索引。您可以進行二分法搜索,直到找到索引「i」處的項目,而不是索引「i + 1」處的項目。您可以爲其他(最小)限制做到這一點。 – irrelephant 2012-08-13 09:04:57