'''
折半查找:
折半查找使用的是二分思想,将要查找的数组不断的对半分,通过比较,在某一个对半的数组中继续查找,从而减少查找次数。
1)必须采用顺序存储结构。
2)必须按关键字大小有序排列。
'''
def binary(mylist,data):
#记录首尾结点
low = 0
high = len(mylist)
#查找的数组不为空
while low <= high:
#折半下标
temp = (low + high) // 2
#判断折半的元素是否等于需要查找的元素,等于则返回元素下标,否则则就折半
if data == mylist[temp]:
return temp
elif data > mylist[temp]:
low = temp
else:
high = temp - 1
#循环完成没有找到则返回None
return None
#折半查找需要在有序的序列中查找,所以先对队列进行排序
if __name__ == '__main__':
mylist = [2,3,4,2,1,7,8,5,99,0,1,-1,-6,45]
mylist.sort()
print('排序后的数组:',mylist)
data = int(input('输入需要查找的数:'))
print('待查找元素下标:',binary(mylist,data))
python二分(折半)查找
最新推荐文章于 2020-10-11 17:42:45 发布