二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。
二分法查找的思路如下:
(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。
当目标数大于中间数时,设置low下标等于中间数下标+1,h不变,在此区间进行查找;
当目标数小于中间数时,low不变,h设置为k-1,在此区间进行查找。
(3)如果某一步数组为空,则表示找不到目标元素。
二分法查找的时间复杂度O(logn)。
def search(array,n):
array.sort()#对数组进行排序
low = 0#开始下标
h = len(array) - 1#结束下标
while low <= h:
k = (low + h)//2
if array[k] < n:
low = k + 1
elif array[k] > n:
h = k -1
else:
return k#找到返回对应下标
return -1#找不到返回-1
array = [i for i in range(1,1001,5)]#本身就是有序的数组
print(search(array,816))