PHP 求二分查找递归,二分查找(递归实现)(可查找重复元素)

# 二分查找(递归实现)(可查找重复元素)

def HalfSearch(target,my_list,left,right): # 二分查找是建立在有序列表之上的

if left >right:

return

mid = (left + right)//2

result = []

if my_list[mid] == target:

result.append(mid)

l = mid # target目标元素向左搜索

while True:

if my_list[l-1] == target:

result.append(l-1)

l = l-1

else:

break

result.reverse()

r = mid # target目标元素向右搜索

while True:

if my_list[r+1] == target:

result.append(r+1)

r = r+1

else:

break

return result

if my_list[mid] <= target:

return HalfSearch(target,my_list,mid+1,right)

else:

return HalfSearch(target,my_list,left,mid-1)

if __name__ == '__main__':

my_list = [1,2,3,4,4,5,6,7,9]

print("目标元素在原序列的位置是:",HalfSearch(4,my_list,0,len(my_list)-1))

'''

代码亲测有效!!!

二分查找我就不赘叙了,这段(可查找重复元素的二分查找)算法是

在原二分查找算法基础上添加了两个循环实现了可查找重复元素的二分查找

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值