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

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


代码如下:

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                   #未找到返回-1
def 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值