二分查找法实例

server/2024/9/26 1:23:07/

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

实例内容

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

代码展示

# 执行二分查找法的算法函数
# 二分法查找的对象必须是一个有序的集合,
# 如果找到相应的元素则返回其索引位置,否则返回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):# 将查找范围的结束索引值设为原分区中间位置的索引值-1high_index = mid_index - 1else:# 如果中间位置数值的数值小于要查找的数值# 将查找范围的起始索引值设为原分区中间位置的索引值+1low_index = mid_index + 1return 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.ppmy.cn/server/25191.html

相关文章

鸿蒙OpenHarmony【轻量系统 烧录】 (基于Hi3861开发板)

烧录 针对Hi3861开发板&#xff0c;除了DevEco Device Tool&#xff08;操作方法请参考烧录&#xff09;外&#xff0c;还可以使用Hiburn进行烧录。 前提条件 开发板相关源码已编译完成&#xff0c;已形成烧录文件。客户端&#xff08;操作平台&#xff0c;例如Windows系统&…

14.MMD导入Blender及贴图步骤

MMD导出.abc文件 在MMD十周年桥版本导入一个人物模型&#xff0c;这里导入仆人 注意MMD的路径不能有中文 点击上面的MMDBridge 设定 第一个选择blender by 第二个选择实行 这里是选择帧数范围和帧率 帧率一定要是30&#xff0c;不然后面可能会出问题 点击文件导出视频…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-9.1-LED灯(模仿STM32驱动开发实验)

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Jetson nx SSD固态硬盘作为启动盘

我原本是用的SD卡当作启动盘 但是SD卡只有64G&#xff0c;内存很小 所以要使用一个1T固态硬盘 本文主要参考自如下链接 https://blog.csdn.net/weixin_44312422/article/details/130992003?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171387044516800225551025…

Git和Github绑定

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

栈和链表的区分

栈&#xff08;Stack&#xff09;&#xff1a; 栈是一种特殊的线性表&#xff0c;遵循“后进先出”&#xff08;Last In First Out, LIFO&#xff09;原则。栈通常用数组或链表来实现&#xff0c;但重点在于其操作的限制而非底层数据结构。无论使用顺序栈&#xff08;基于数组…

C#基础|对象初始化器与构造方法对比总结

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 01 对象初始化器的作用 为了更加灵活的初始化对象的“属性”&#xff0c;是对构造化方法的补充。 02 构造方法总结 2.1、存在的必要性&#xff1a;一个类中&#xff0c;至少要有一个构造方法&#xff08;有无参数均…

vue生命周期

Vue beforeCreate: //在实例生成之前会自动执行的函数 created: // 在实例生成之后会自动执行的函数 beforeMount://在模版渲染完成之前&#xff08;实例挂载&#xff09;执行 mounted&#xff1a; //在模版渲染完成之后&#xff08;实例挂载&#xff09;执行 beforeUpdate: /…