折半查找是一种高速有效的查找算法,要求输入的元素必须有序;
代码如下:
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