宣讲后笔试题目:
实现一个简单的二分查找,给出的数列是从小到大的。
'''二分查找'''
def binary_search(num_list,x):
'''二分查找'''
left,right = 0,len(num_list)
while left<=right:
mid = int((left+right)/2)
if num_list[mid] > x:
right = mid-1
elif num_list[mid] < x:
left = mid+1
else:
return x,mid
return '不存在'
num_list = [2,5,8,10,11,23]
print(binary_search(num_list,5))
print(binary_search(num_list,2))
print(binary_search(num_list,23))
print(binary_search(num_list,8))
print(binary_search(num_list,10))
print(binary_search(num_list,9))
算法时间复杂度为O(logn),相比线性查找的O(n)还是要强很多的。