python之折半查找算法

2023-11-18

折半查找算法也叫二分查找算法。算法的细节我就不讲了。但是必须说一下二分查找是基于我们之前的数据是有序的,如果没有序该算法是没有意义的。个人觉得代码比较直观,所以我这里就直接上代码了。

折半查找非递归算法

#折半查找非递归算法
#折半查找函数
#参数      数组 起始位置 结束位置 数据
def search(arr,start,end,data):
    while(start<=end):
        half=int((start+end)/2)
        if(arr[half][0]==data):
            return half
        elif(arr[half][0]>data):
            end=half-1
        else:
            start=half+1
    #为了防止找不到
    return -1
#打印函数
def myPrint(arr,index):
    if(index!=-1):
        name=arr[index][1]
        print('name : ',name)
    else:
        print('no found')
arr=[[201701,'张三'],[201703,'李四'],[201710,'王麻子'],[201713,'隔壁老王']]
print('search 201713')
index=search(arr,0,3,201713)
myPrint(arr,index)
print('search 2017102')
index=search(arr,0,3,2017102)
myPrint(arr,index)

输出结果

search 201713
name :  隔壁老王
search 2017102
no found

折半查找递归算法

#折半查找递归算法
#参数      数组 起始位置 结束位置 数据
def search(arr,start,end,data):
    half=int((start+end)/2)
    if(start<=end):
            #相等的时候返回位置
            if(arr[half][0]==data):
                return half
            elif(arr[half][0]>data):
                result=search(arr,start,half-1,data)
            else:
                result=search(arr,half+1,end,data)
            #因为有可能没有找到,所以这里有一个判断语句
            if(result==None):
                return -1
            else:
                return result
#打印函数
def myPrint(arr,index):
    if(index!=-1):
        name=arr[index][1]
        print('name : ',name)
    else:
        print('no found')
arr=[[201701,'张三'],[201703,'李四'],[201710,'王麻子'],[201713,'隔壁老王']]
print('search 201713')
index=search(arr,0,3,201713)
myPrint(arr,index)
print('search 2017102')
index=search(arr,0,3,2017102)
myPrint(arr,index)

结果如下:

search 201713
name :  隔壁老王
search 2017102
no found
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python之折半查找算法 的相关文章

随机推荐

  • 关于Form表单中action参数传值的问题

    form中get方法时action属性后面传递参数获取不到原因 浏览器会将表单数据封装为字符串 如controller message method search 然后直接附在表单的 action URL 之后 这两者之间用问号 进行分隔度
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-3)

    文章目录 1 3 Scala的数据结构 1 3 1 数组 数组的遍历 数组转换 1 3 2 元组 创建元组 获取元组中的值 拉链操作 1 3 3 集合 List Set Map 1 3 Scala的数据结构 对于每一门编程语言来说 数组 A
  • Linux下使用system函数获取命令执行返回结果

    在Linux C语言中 需要获取设备挂载和空间容量信息 这时候最简单的方式就是使用命令工具进行查询 但是system函数调用之能返回进行执行的状态 不能返回执行的结果 所以这里自己实现system函数返回命令执行的结果 以获取设备挂载信息和
  • 第1周编程题-表示分数类的Fraction

    题目内容 设计一个表示分数的类Fraction 这个类用两个int类型的变量分别表示分子和分母 这个类的构造函数是 Fraction int a int b 构造一个a b的分数 这个类要提供以下的功能 double toDouble 将分
  • R语言数据拆分

    博主的话 大家好 这里是bio 先赞后看养成习惯 还没关注的小伙伴点点关注不迷路 今天是南方的小年 祝福大家小年快乐 目录 博主的话 前言 一 split 函数 二 subset 函数 总结 前言 今天继续学习R语言 我们之前已经介绍过了数
  • 用python对训练集和测试集进行特征规范化处理

    这里的规范化处理指对提取后的特征集进行处理 不是对原始的数据信号进行处理 包括归一化和标准化 规范化的原因 不同特征具有不同量级时会导致 a 数量级的差异将导致量级较大的特征占据主导地位 b 数量级的差异将导致迭代收敛速度减慢 c 依赖于样
  • 从ChatGPT出发:大模型与自然语言模型

    目录 引言 基石 故事的开始 Transformer 异姓兄弟 GPT Bert与GPT 2 GPT Bert GPT 2 大力出奇迹 GPT3 模型的进化 InstructGPT ChatGPT 代码库 Transformer GPT 2
  • 【Linux】进程篇---进程概念及原理

    目录 1 什么是进程 2 操作系统是如何管理进程的 3 进程标识符 PID 3 1查看进程标识符 3 2getpid 和getppid 4 进程当前状态 4 1进程状态粗分 4 2Linux下进程状态 4 2 1linux下进程状态概念 4
  • 【深度学习】端到端的“即插即用“卷积模块以替代传统Conv层

    文章参考 大盘点 十大即插即用的涨点神器 360doc com CompConv 一种用于高效特征学习的紧凑型卷积模块 知乎 zhihu com 紧凑型深度卷积神经网络在图像识别中的应用 ceaj org
  • 浪潮服务器通过DHCP获取地址进入IPMI,BMC管理后台的方法,可实现远程安装系统、温度运行状态监测、风扇转速调整、远程开关机、KVM控制台显示器等功能

    前言 这里主要介绍通过DHCP进入BMC管理后台的方法 在官方网站有介绍的地方会直接给链接 这里就不在赘述 配置网络 DHCP获取地址 这个方法适用于没有手动设置过BMC地址的情况 这里用到的DHCP工具是 深度远程启动管理器 深度远程启动
  • 面试准备:MySQL建立索引的原则

    文章目录 建立索引 1 和in可以乱序 2 最左前缀匹配原则 3 尽量选择区分度高的列作为索引 4 索引列不能参与计算 5 尽量的扩展索引 不要新建索引 6 为经常需要排序 分组和联合操作的字段建立索引 7 为常作为查询条件的字段建立索引
  • 【山河送书第十一期】:朋友圈大佬都去读研了,这份备考书单我码住了,考研书籍五本!!

    朋友圈大佬都去读研了 这份备考书单我码住了 数据结构与算法分析 计算机网络 自顶向下方法 现代操作系统 深入理解计算机系统 概率论基础教程 原书第10版 线性代数 原书第10版 线性代数及其应用 重磅推荐 参与方式 往期赠书回顾 八九月的朋
  • AlmaLinux 安装过程解析

    此文将对AlmaLinux操作系统安装过程进行解析 对于经常使用Linux系统的大佬 可能对此安装过程有些乏味 但鉴于目前为止 似乎没有一篇安装的过程解析 那不妨由笔者写下一篇吧 笔者软件安装环境 VMware VMware Worksta
  • 提升模型效果的途径

    模型效果不佳 可以考虑从以下几个方面进行改进 数据增广 1 基于图像处理的数据增广 几何变换 旋转 缩放 翻转 剪裁 平移 仿射变换 颜色空间变换 亮度 对比度 饱和度调整 颜色空间转行 色彩调整 添加噪声和滤波 注入高斯噪声 椒盐噪声 模
  • Python模糊控制库使用(基本操作与仿真结果3D显示)

    Python模糊控制库使用 模糊控制库安装 示例 定义模糊控制变量 模糊隶属函数 模糊规则 激活模糊控制器 3D可视化结果 完整代码 模糊控制库安装 模糊控制库github 链接 Github python pip安装 pip instal
  • 第三十九章、PyQt显示部件:OpenGL Widget部件功能简介及使用其显示图片

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 概述 OpenGL Widget部件是一个OpenGL Open Graphics L
  • java反射机制 (属性,注解)(代码)

    博学谷IT学习技术支持 1案例的类 import com example demo3 fanshe MyAnnotation import lombok Data author zw Description 描述 create 2022 2
  • YOLOv8+BoT-SORT多目标跟踪(行人车辆计数与越界识别)

    课程链接 https edu csdn net course detail 38919 BoT SORT是发表于2022年的先进的多目标跟踪算法 它结合了运动和外观信息 相机运动补偿和更准确的卡尔曼滤波状态向量 并把这些改进集成到ByteT
  • vue的环境搭建2023,idea,vscode踩坑记录

    由于看了19 20年的几篇博客 导致搭建vue环境一部分环节出大问题 大家还是看官方文档吧 血泪教训 不说废话直接开始 1 nodejs下载 下载地址 https nodejs org zh cn 下载稳定版 安装过程我是一路next 就是
  • python之折半查找算法

    折半查找算法也叫二分查找算法 算法的细节我就不讲了 但是必须说一下二分查找是基于我们之前的数据是有序的 如果没有序该算法是没有意义的 个人觉得代码比较直观 所以我这里就直接上代码了 折半查找非递归算法 折半查找非递归算法 折半查找函数 参数