2.题目:由N个有序整数组成的数列已放在一维数组中,下列给定 程序中函数fun的功能是:利用折半查找法查找整数m在
数组中的位置。若找到,返回其下标值;否则,返回-1。
请改正程序中的错误,使它能得出正确的结果。
说明:折半查找的基本算法是:每次查找前先确定数组中待查的
范围low和high(low<high),然后用m与中间位置(mid)上
元素的值进行比较。如果m的值大于中间位置元素的值,
则下一次的查找范围落在中间位置之后的元素中;反之,
下一次的查找范围落在中间位置之前的元素中。直到low>high,
查找结束。
-----------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------'''
def fun(a,m):
low=0
high=len(a)-1
while(low<=high):
#**********FOUND**********
mid=(low+high)/2
if(m<a[mid]):
high=mid-1
#**********FOUND**********
else if(m<a[mid])
low=mid+1
else:
return mid
return -1
def main():
a =[-3,4,7,9,13,45,67,89,100,180]
print("a数组中的数据如下:")
for i in range(len(a)):
print("%d " %a[i])
m = int(input("请输入要查找的整数m,并按回车继续:"))
k=fun(a,m)
if(k>=0):
print("m={},index={}".format(m,k))
else:
print("没有找到!")
if __name__ == '__main__':
main()