当前位置: 首页 > news >正文

python之二分法

python之二分法

文章目录

  • python之二分法
    • 一、什么是算法
    • 二、二分法应用场景
      • 示例

一、什么是算法

这里的算法就是基于函数递归的称述拓展

  • 算法就是高效解决问题的方法
  • 二分法就是一种算法

二、二分法应用场景

  • 想要从一个从小到大排列的成千上万个值中找到指定的值
  • 如果使用遍历的话效率太低
  • 那么而二分法就可以极大的缩小问题的规模,以此来提高效率

示例

nums = [-23,-2,4,5,8,90,234,345,467,786,978,8900]  # 从小到大排列
def check(num,l):
    print(l)
    if len(l) == 0:
        print("不存在这个值")
        return
    mid_num = len(l) // 2
    if num > l[mid_num]:   # 说明在中间值得右边
        l = l[mid_num+1:]  # 使用切片将右边的值从新赋值给 l
        check(num,l)       # 递归
    elif num < l[mid_num]: # 说明在中间值得右边
        l = l[:mid_num]    # 使用切片将右边的值从新赋值给 l
        check(num,l)       # 递归
    else:
        print("OK!")

check(8900,nums)  # OK!

相关文章:

  • python之json模块
  • python之pickle模块
  • python之time与datetime模块
  • python之random模块
  • python之os模块
  • shutil模块
  • shelve 模块
  • typing模块
  • 压缩zipfile与解压缩tarfile模块
  • pyecharts 模块的简单使用
  • hashlib 与 hmac 模块
  • python之包
  • python之logging模块详解
  • logging模块基本介绍及使用
  • 面向对象的由来
  • SegmentFault for Android 3.0 发布
  • 30秒的PHP代码片段(1)数组 - Array
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular6错误 Service: No provider for Renderer2
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Fastjson的基本使用方法大全
  • HomeBrew常规使用教程
  • mysql中InnoDB引擎中页的概念
  • 百度地图API标注+时间轴组件
  • 第十八天-企业应用架构模式-基本模式
  • 二维平面内的碰撞检测【一】
  • 聊一聊前端的监控
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 入门级的git使用指北
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 一个项目push到多个远程Git仓库
  • 一天一个设计模式之JS实现——适配器模式
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Semaphore
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​MySQL主从复制一致性检测
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ###项目技术发展史
  • #include<初见C语言之指针(5)>
  • #微信小程序(布局、渲染层基础知识)
  • $.ajax()方法详解
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (第27天)Oracle 数据泵转换分区表
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (一)基于IDEA的JAVA基础1
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转载)Linux 多线程条件变量同步
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 回调、接口回调、 委托
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .netcore如何运行环境安装到Linux服务器
  • .NET和.COM和.CN域名区别