分治法---折半查找(python描述)

来源:互联网 发布:mysql常用命令总结 编辑:程序博客网 时间:2024/06/10 18:46

折半查找是一种高速有效的查找算法,要求输入的元素必须有序;


代码如下:

def binsearch(R,key):    height=len(R)-1#上界设置为取得待排序序列长度    low=0#下届设置为1    mid=int((low+height)/2)#中间值    while(low<=height):        if key==R[mid]:            return mid          #找到答案返回找到值的位置        elif key<R[mid]:            height=mid-1        #如果key小于中间值则上界下移到中间值的下一位        else:            low=mid+1           #如果key大于中间值则下界上移到中间值的上一位        mid=int((low+height)/2)  #重置中间值    return -1                   #未找到返回-1def main():    key=3    R=[1,2,3,4,5,6,7,8]    indexNum=binsearch(R,key)    print("原始序列为:"+str(R))    print("Key为:"+str(key))    if indexNum==(-1):        print("未找到!")    else:        print("key的位置为:   "+str(indexNum+1))if __name__=="__main__":    main()




运行结果:

原始序列为:[1, 2, 3, 4, 5, 6, 7, 8]
Key为:3
key的位置为:   3

0 0