2012-08-13 4 views
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() 
+0

정렬 된 배열의 인덱스 범위. 색인 'i'에서 항목을 찾을 때까지 색인'i + 1'에서 항목이 아닌 항목을 찾을 때까지 이진 검색을 수행 할 수 있습니다. 다른 (최소) 범위에 대해이 작업을 수행 할 수 있습니다. – irrelephant

답변

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 
관련 문제