弄懂分治系列:换个模型,二分查找还会用吗?

Posted 蓝调百香果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弄懂分治系列:换个模型,二分查找还会用吗?相关的知识,希望对你有一定的参考价值。

  1. 体验卡片游戏

  2. 模拟二分查找过程


    3.程序代码

    利用上一次的算法代码,只是更改了列表,从1位置开始,需要左边界初始为1.

#!/usr/bin/env python3

def search(cards, x):

    a = 1

    b = len(cards)-1

    # 逐级分割查找范围,缩小查询规模

    while a <= b:

        m = (a + b) // 2

        print("m的变化过程:",m)     # 跟踪中位序号

        if x == cards[m]:

            return m

        elif x < cards[m]:

            b = m - 1

        else:

            a = m + 1

    return -1  # 找不到目标,返回-1


# 主程序

# d作为cards的原始数据。弃用0号元素,卡片编号从1开始

d = ["卡片内容:",1, 5, 7, 8, 12, 15, 18, 21, 27, 29, 30, 31]

print(d)


r = 29   # 假设抽查日期为29日

y = search(d, r) # 调用search函数,传入d与r数据


if y > 0:

    print("抽查日期",r,"的序号为",y)

    print("恭喜,可获得神秘礼物")

else:

    print("抽查日期",r,"不存在")

    print("本月没有神秘礼物,下月继续努力哦!")


小经验: 


     

print("m的变化过程:",m)     # 跟踪中位序号

这种数据跟踪策略是最常用的程序纠错方法,

也是理解通过数据变化算法的关键过程。




以上是关于弄懂分治系列:换个模型,二分查找还会用吗?的主要内容,如果未能解决你的问题,请参考以下文章

分治算法-二分查找

算法导论第2章 分治法与归并排序, 二分查找法

分治算法——二分查找STL函数库的应用第五弹——二分函数

几张动图让你弄懂二分查找等概念

[知识点] 2.5 二分思想

[知识点] 2.5 二分思想