二分查找,Python

#查找
“”"
one 、二分查找
“”"

def binary_search(findNum,left,right,content):
#如果列表的做下标小于等于右下标,说有没查找的列表值
while left <= right:
#得到列表最中间的下标索引
mid = (left + right)//2
#如果要寻找的值小于中间值,说明要查找的值在在列表的左端,mid索引给right,递归函数继续查找。
if findNum < content[mid]:
right = mid
binary_search(findNum,left,right,content)
# 如果要寻找的值大于中间值,说明要查找的值在在列表的右端,mid索引给left,递归函数继续查找。
elif findNum > content[mid]:
left = mid
binary_search(findNum, right, left, content)
# 说明查到了
else:
return mid
#要查找的值不存在
else:
return -1
#查找的列表
lis = [45,26,87,97,85]
#列表排序,list自带的方法
lis.sort()
#Python 内置函数,列表排序
ret1 = sorted(lis)
print(lis)
#调用自定义的二分查找,函数
ret = binary_search(100,0,len(lis),ret1)
if ret != -1:
print(lis[ret],“下表是”,ret)
else:
print(“找不到”)

#第二种,查找某个字符,是否存在于某一个列表中。
#search_MAX,寻找最大值
def search_Max(findContent):
max = findContent[0]
for value in findContent:
if max < value:
max = value
else:
pass
return max
def index_search(target,findContent):
length = search_Max(li)+len(findContent)
newlist = []
targetIndex = -1
for index in range(length):
newlist.insert(index,0)
for value in findContent:
#newlist.delitem(value)
newlist.pop(value)
newlist.insert(value,1)
return newlist[target] == 1

#调用
li = [10, 20, 30, 78, 45, 5, 4]
ret = index_search(20,li)
print(ret)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值