Python基础习题
1.请实现有重复数字的升序数组二分查找
给定一个元素有序(升序)的整型数组muns和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1
解题思路
1,可以用index查找元素的下标,找到返回下标,找不到报错,因此可以使用try函数报错返回-1即可,代码如下:
num_list = [1,2,4,4,5]
num_target = 4
try:
a = num_list.index(num_target)
except Exception as e:
print('-1')
else:
print(a)
运行结果:
2
题目理解错误,需要运用二分法进行解题,因此重新整理
解题思路
1,二分法是每次和中间位置变量进行比较,可以先手动二分解题:
new_list = [1,2,3,3,4,4,11,23,44,55,3,5,6,7,8,10]
target = 2
new_list.sort()
print(new_list)
# todo 第一次二分查找
low = 0
high = len(new_list) - 1
one_middle = (low + high)//2
print('第一次查找的中间位置是',one_middle)
# todo 第一次参与的中间值是
print(new_list[one_middle])
#todo 第二次二分查找
low = 0
hi