python 每天一个算法题(二分法查找)
1.二分法的实质:二分法用于从一个有序的列表中查询目标元素,采取的方式是---取列表中间值做基础进行比较,如果目标值target_number 与中间值相等,则找到对应的值的位置,如果目标值与中间值不等>>>则比较中间值与目标值的大小,如果目标值大于中间值,则将中间值赋给新列表的起始值,如果目标值小于中间值,则执行相反的操作,一直到取到最终值为止,如果循环结束,没有找到,则返回一个信息告知
import time
import random
#首先生成一个列表,并对列表进行排序
list1 = [random.randint(1,10000) for x in range(1,1000)]
def search_targrt_number(list,target_number):#定义函数,传入一个列表及目标值
list1.sort()#调用sort进行排序
i = 0 #用于统计循环多少次后找到目标元素
lower = 0
high = len(array)-1
while lower <= high:
i+=1
midle = (lower+high)//2
if midel < target_number:
lower = midle+1
elif midel > target_number:
high = midle - 1
else:
return midle,i
return -1
search_targrt_number(list1,302)