def interpolation_search(data,val): low=0 high=len(data)-1 print(\'查找过程中......\') while low<= high and val !=-1: mid=low+int((val-data[low])*(high-low)/(data[high]-data[low])) #插值查找法公式 if val==data[mid]: return mid elif val < data[mid]: print(\'%d 介于位置 %d[%3d] 和中间值 %d[%3d] 之间,找左半边\' \ %(val,low+1,data[low],mid+1,data[mid])) high=mid-1 elif val > data[mid]: print(\'%d 介于中间值位置 %d[%3d] 和 %d[%3d] 之间,找右半边\' \ %(val,mid+1,data[mid],high+1,data[high])) low=mid+1 return -1 val=1 data=[3,4,5,6,7,8,9] while True: num=0 val=int(input(\'请输入查找键值(1-150),输入-1结束:\')) if val==-1: break num=interpolation_search(data,val) if num==-1: print(\'##### 没有找到[%3d] #####\' %val) else: print(\'在第 %2d个位置找到 [%3d]\' %(num+1,data[num])) print(\'数据内容为:\') for j in data: print(\'%3d\' %(j),end=\'\') print()