二分查找法实例

news2024/11/24 20:23:44

本文是根据数据结构中常常提到的二分法而作的一篇博客,主要通过一个二分法实例进行展开说明:
在这里插入图片描述

实例内容

通过一个二分法函数来寻找某个数是否在给定的数组中;

代码展示

# 执行二分查找法的算法函数
# 二分法查找的对象必须是一个有序的集合,
# 如果找到相应的元素则返回其索引位置,否则返回None
def binsearch(list, search_value):
    # 指定查找数据集的起始索引
    low_index = 0
    # 指定查找数据集的结束索引
    high_index = len(list) - 1
    # 当起始索引小于结束索引时,表示数据集中数据还可二分,
    # 提示:我们将每次二分后得到两个半区称为分区
    while (low_index <= high_index):
        # 取出当前查找数据集中间位置的索引值,round()取得整数
        mid_index = round((low_index + high_index) / 2)
        # 取出当前分区的中间位置的数值
        mid_value = list[mid_index]
        # 如果中间位置数值的数值等于要查找的数值
        if (mid_value == search_value):
            # 返回找到数值的索引值
            return mid_index
            # 如果中间位置数值的数值大于要查找的数值
        if (mid_value > search_value):
            # 将查找范围的结束索引值设为原分区中间位置的索引值-1
            high_index = mid_index - 1
        else:
            # 如果中间位置数值的数值小于要查找的数值
            # 将查找范围的起始索引值设为原分区中间位置的索引值+1
            low_index = mid_index + 1
    return None

# 提供一个测试用的有序列表
test_list = [1, 2, 3, 5, 8, 33, 55, 67, 88, 99, 203, 211, 985]
# 录入要查找的数值
search_value = int(input('请录要查找的数值:'))
vret = binsearch(test_list, search_value)
if vret:
    print('你在', test_list, '中查找:', search_value)
    print('查找结果:', search_value, '在数据集中索引值是:', vret)
else:
    print('你在', test_list, '中查找:', search_value)
    print('查找结果:未查到')

展现结果

分别输入一个数据集中没有的数和数据集包含的数,两次结果展示如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1634759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初步认识Vscode

4.26初步认识Vscode &#xff08;一&#xff09;快捷键的使用 1. 打开控制端 ctrl ~2. 结束终端 ctrl c3. 多行同时对齐输出 按住shift alt 光标多选4. 多行同时任意位置输出 按住alt 光标单点你想要输入的位置5. 代码太长了&#xff0c;想混行编辑 alt z6. 打开设置控制…

工信部CAPPVD公布24年一季度积分情况,海云安位居全国第二!

近日&#xff0c;工业和信息化部移动互联网APP产品安全漏洞专业库&#xff08;以下简称“CAPPVD漏洞库”&#xff09;根据《CAPPVD漏洞库支撑单位能力评定办法》和综合24年第一季度的漏洞报送、重要行业企事业单位漏洞加分、高危漏洞处置加分、标准支撑等&#xff0c;最终公布了…

剧本杀小程序开发,剧本杀行业的新发展方向

前几年&#xff0c;剧本杀走入了大众的视野中&#xff0c;并迅速呈现出了井喷式的发展态势&#xff0c;一度成为了年轻消费者的首选娱乐方式&#xff0c;吸引了大量的消费者和跻身入局的创业者。 随着互联网的发展&#xff0c;剧本杀在线上的发展也非常火爆。我国网民群体非常…

final原理

文章目录 1. 设置 final 变量的原理2. 获取 final 变量的原理 1. 设置 final 变量的原理 理解了 volatile 原理&#xff0c;再对比 final 的实现就比较简单了 public class TestFinal {final int a 20; }字节码 0: aload_0 1: invokespecial #1 // Method java/lang/Object…

数据结构与算法(Java版) | 详解十大经典排序算法之一:插入排序

接下来&#xff0c;我来给大家讲解第三种排序算法&#xff0c;即插入排序。 基本介绍 首先&#xff0c;我们来看下插入排序的基本介绍。 插入排序&#xff0c;其属内部排序法&#xff0c;是对于欲排序的元素以插入的方式来找寻该元素的适当位置&#xff0c;以便最终达到排序…

解决RTC内核驱动的问题bm8563

常用pcf-8563 , 国产平替BM8563(驱动管脚一致)&#xff1b; 实时时钟是很常用的一个外设&#xff0c;通过实时时钟我们就可以知道年、月、日和时间等信息。 因此在需要记录时间的场合就需要实时时钟&#xff0c;可以使用专用的实时时钟芯片来完成此功能 RTC 设备驱动是一个标准…

最新版pycharm安装教程

目录 PyCharm 简介 访问 PyCharm 官网&#xff1a; 选择版本&#xff1a; 这里我们选择社区版即可 环境变量的配置 第一步 第二步 第三步 Pycharm的使用 【报错解决】 通用注意事项&#xff1a; PyCharm 简介 ​ PyCharm是一种Python IDE&#xff08;Integrated Devel…

Facebook的声音:听见社交媒体的心跳

社交媒体如今已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的佼佼者&#xff0c;承载着数以亿计的用户的交流、分享和连接。在这个信息爆炸的时代&#xff0c;Facebook的声音就像是社交媒体的心跳&#xff0c;传递着无数个体的情感、思想和生活。本文…

led台灯对眼睛好不好?分享多款高品质护眼台灯

很多家长都关心孩子学习时led台灯对眼睛好不好&#xff1f;其实&#xff0c;目前的led技术已经十分成熟了&#xff0c;一些好的led灯基本能够做到无蓝光、频闪危害等等&#xff0c;不过这也不包括一些劣质的产品&#xff0c;因为有些有些商家为了降低成本&#xff0c;不惜牺牲产…

Angular中的管道(Pipe)

Angular中的管道(Pipe) 文章目录 Angular中的管道(Pipe)前言一、内置管道1. date管道格式化日期2. currency管道格式化货币3. uppercase和lowercase管道转换字符串大小写4. 小数位数5. JavaScript 对象序列化6. slice7. 管道链 二、自定义管道 前言 Angular中的管道&#xff0…

CogVLM/CogAgent环境搭建推理测试

引子 对于多模态大语言模型&#xff0c;一直没有怎么接触。刚巧一朋友有问到这方面的问题&#xff0c;也就顺手调研下。智谱AI的东西一直以来&#xff0c;还是很不错的。ChatGLM的忠实fans&#xff0c;看到白嫖网站github上有他们开源的多模态CogVLM/CogAgent&#xff0c;那就…

Java项目:基于SSM框架实现的实践项目管理系统(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的实践项目管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff…

systemserver为啥很少同步跨进程调用app/DeadSystemException相关问题分析套路

背景&#xff1a; 有学员分享了一个问题&#xff0c;说monkey测试过程中有一系列问题属于同类的&#xff0c;具体看如下截图&#xff1a; 可以看到这里的有很多应用都进行了crash&#xff0c;而且crash原因居然都是写着 DeadSystemException: The system died; earlier logs …

《Redis使用手册之散列》

《Redis使用手册之散列》 **《Redis使用手册之散列》****散列简介****HSET&#xff1a;为字段设置值****HSETNX&#xff1a;只在字段不存在的情况下为它设置值****HGET&#xff1a;获取字段的值****HINCRBY&#xff1a;对字段存储的整数值执行加法或减法操作****HINCRBYFLOAT&a…

基于飞腾D2000全国产化高速公路一体化收费站解决方案:站数据服务器、站AI服务器、收费系统、监控系统

高速公路一体化收费站解决方案 行业 交通工程及沿路设施作为公路的一个重要组成部分&#xff0c;对城市互联和城市发展具有重要意义&#xff0c;因此围绕高速公路的专用收费 站设计和建设&#xff0c;将有效促进枢纽集散系统与高速公路连通&#xff0c;显著提升城市高速集散能…

Flexible布局在Web前端开发中的实际应用

随着Web前端技术的不断发展&#xff0c;Flexible布局&#xff08;弹性布局&#xff09;已成为现代网页设计中不可或缺的一部分。它提供了一种高效、灵活的方式来组织和管理页面元素&#xff0c;使开发者能够轻松应对各种复杂的布局需求。本文将通过一个实际的应用案例来介绍Fle…

echarts开发技巧

tooltip 提示框组件相关的行为&#xff0c;必须引入提示框组件后才能使用。 tooltip: {trigger: axis,axisPointer: {type: cross,label: {backgroundColor: #6a7985,},},//为弹出层的value值增加百分号valueFormatter: function (value) {return value %}, }, tooltip.axi…

确定性最大似然(DML)估计测角

1. 最大似然函数 贝叶斯方法是基于统计理论的一种经典方法&#xff0c;适合于有关参数估计问题。最大似然 (Maximum Likelihood&#xff0c;ML) 估计方法就是贝叶斯估计方法的一种特例&#xff0c;是在已知高斯噪声情况下的贝叶斯最优估计。在ML算法中&#xff0c;观测所得信号…

postman一直转圈圈,无法启动

解决 地址栏输入%appdata%进入此目录&#xff0c;删除%appdata%目录下的postman文件可以解决问题。

公考学习平台|基于SprinBoot+vue的公考学习平台(源码+数据库+文档)

公考学习平台目录 目录 基于SprinBootvue的公考学习平台 一、前言 二、系统设计 三、系统功能设计 5.1用户信息管理 5.2 视频信息管理 5.3公告信息管理 5.1论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…