使用二进制搜索在列表中查找多个项目

时间:2012-08-13 08:58:39

标签: python-3.x recursive-datastructures

这就是我所做的,但这只能找到列表中的一个项目,我想打印出项目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()

1 个答案:

答案 0 :(得分:0)

你可以创建一个函数来处理它,并返回一个索引列表而不是一个整数:

def check_for_number_around_index(index, sorted_list):
  indices = [index]
  i = index - 1
  while(i >= 0 and sorted_list[i] == sorted_list[index]):
    indicies.append(i)
    i = i - 1
  i = index + 1
  while( i < len(sorted_list) and sorted_list[i] == sorted_list[index]):
    indicies.append(i)
    i = i + 1
  return indicies