二分法查找

二分查找又称折半查找,将表中间的元素与需要查找的元素进行比较,如果相同,则查找成功。否则,根据中间的元素将表分成前后两个子表,当查找元素大于中间的元素时,查找后表,重复以上步骤。小于中间的元素时,同理。

优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。

def binary_search(li,item):

start =0

    end =len(li)-1

    while start<=end:

mid = (start+end)//2

        if li[mid] == item:

return True

        elif li[mid] > item:

end = mid -1

        else:

start = mid +1

    return False

#递归

def recursion(li,item):

if len(li)==0:

return False

    else:

mid =len(li)//2

        if li[mid] == item:

return  True

        else:

if item < li[mid]:

return recursion(li[:mid],item)

else:

return recursion(li[mid+1:],item)

li = [17,20,26,31,44,54,55,77,93]

print(binary_search(li,558))

print(recursion(li,179))

你可能感兴趣的:(二分法查找)