【python学习】查找算法案例分析

《中学生可以这样学Python》P194-196

编写程序 使用顺序查找法判断列表中是否存在给定的元素 如果存在就返回索引 否则返回False

#查找算法案例分析
## 编写程序 使用顺序查找法判断列表中是否存在给定的元素 如果存在就返回索引 否则返回False
def seqSearch(lst,item):
    for index,value in enumerate(lst):
        if value==item:
            return index
    return False
lst=list(range(1,100,2))
pos=seqSearch(lst,3)
#print(pos)
if pos!=-1:
    print(pos)
else:
    print('not exists') #需要把return False改为return -1

编写程序 使用二分法查找列表中是否存在某个元素

##编写程序 使用二分法查找列表中是否存在某个元素
def binarySearch(lst,value):
    start=0
    end=len(lst)
    while start<=end:
        #计算中间位置
        middle=(start+end)//2
        #查找成功 返回元素对应的位置
        if value==lst[middle]:
            return middle
        #在后面一半元素中继续查找
        elif value>lst[middle]:
            start=middle+1
        #在前面一半中继续查找
        elif value<lst[middle]:
            end=middle-1
    #查找不成功 则返回False
    return -1
from random import randint
lst=[randint(1,50) for i in range(20)]
lst.sort()
print(lst)
result=binarySearch(lst,30)
if result !=-1:
    print('成功找到,位置索引为',result)
else:
    print('找不到,该数不存在')

结果:

>>> %Run test8.py
1
[4, 6, 7, 14, 17, 21, 26, 27, 30, 31, 31, 32, 35, 37, 37, 37, 38, 40, 41, 45]
成功找到,位置索引为 8
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值