Python 查找算法

*爱你&永不变心* 提交于 2020-03-01 21:31:25

递归查找

def bi_search_re(num_list,val):
    def bi_search(l, h):
        if(l > h):
            return -1
        mid = (l + h) // 2
        if(num_list[mid] == val):
            return mid ;
        if(num_list[mid] > val):
            return bi_search(l, mid - 1)
        else:
            return bi_search(mid + 1, h)
    return bi_search(0,len(num_list)-1)

num_list = [0,1,2,3,4]
print(bi_search_re(num_list,1))
print(bi_search_re(num_list,3))

二分法查找,前提:有序

def bi_search_iter(alist,item):
    left, right = 0, len(alist) - 1
    while(left <= right):
        mid = left + (right - left) // 2 #(left + right) // 2 Java或c++容易溢出
        if(item < mid):
            right = mid -1
        elif(item > mid):
            left = mid + 1
        else:
            return mid
    return -1

num_list = [0,1,2,3,4,5,6,7,8,9]
print(bi_search_iter(num_list,7))
print(bi_search_iter(num_list,4))

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!