实施阶段(2024年4月)

【活动二】编程解决问题,二分查找法统计查字典次数。

任务要求:假设字典为1000页,若用二分法来翻到用户输入的具体指定的页数,则需要的最大查找次数为?

设计算法:

取总页码数据中间值,将待查数据与中间值进行比较,调整边界值,缩小数据区间,通过不断地对比、调整、缩小区间,最终查找到目标数据。

编写程序:

x=int(input("请输入需要查找的具体页码数:"))

cishu =0

flag1=1

flag2=1000

while flag1<=flag2:

    mid=(flag1+flag2)//2

    cishu=cishu+1

    if x<mid:

        flag2=mid-1

    elif x>mid:

        flag1=mid+1

    else:

        break

print("最大查找次数为:",cishu)

   

【活动三】编程解决问题,二分查找法求解数学问题。

任务要求:求解一个正整数x(x>0)的算术平方根。

算法思想:

结合数学知识点思考,如果一个数的平方大于待求解的这个数,那么它的算术平方根也比待求解的这个数大;如果一个数的平方小于待求解的这个数,那么它的算术平方根也比待求解的这个数小。例如:16的算术平方根是4,起始区间设置为[0,16],第一次取中间值8,8**2>16,调整边界值,缩小区间[0,8];第二次取中间值4,4**2=16,问题求解完成;如未求解完成,继续取中间值,调整区间。

编写程序:

num=int(input("请输入一个大于0的正整数:"))

flag1=0

flag2=num

mid=(flag1+flag2)/2

while abs(mid**2-num)>=0.00001:

    if mid**2>num:

        flag2=mid

    else:

        flag1=mid

    mid=(flag1+flag2)/2

print(mid)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值