二分查找(有序序列)

2019-05-08  本文已影响0人  郭海杰

1.二分查找,递归

def  test_search(alist, item):
    n = len(alist)
    if n > 0:
        mid = n//2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            return test_search(alist[:mid],item)
        else:
            return test_search(alist[mid+1:],item)
    return False
#仅限用于有序序列
if __name__ == "__main__":
   li = [12,13,14,15,16,17,18,19,20,21,22,23,24]
    print(test_search(li, 30))
    print(test_search(li, 13))

2.二分查找,非递归

def  test_search(alist, item):
    n = len(alist)
    first = 0
    last = n-1 
    while first <= last:
        mid = (last  + first)//2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            last = mid - 1
        else:
            first = mid + 1
    return False
#仅限用于有序序列
if __name__ == "__main__":
   li = [12,13,14,15,16,17,18,19,20,21,22,23,24]
    print(test_search(li, 30))
    print(test_search(li, 13))
上一篇 下一篇

猜你喜欢

热点阅读