(Python基础习题)请实现有重复数字的升序数组二分查找

Python基础习题1.请实现有重复数字的升序数组二分查找给定一个元素有序(升序)的整型数组muns和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1解题思路1,可以用index查找元素的下标,找到返回下标,找不到报错,因此可以使用try函数报错返回-1即可,代码如下:num_list = [1,2,4,4,5]num_target = 4try: a = num_list.index(num_target)except Excep
摘要由CSDN通过智能技术生成

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
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值