python有序查找算法 二分法实例解析


Posted in Python onFebruary 18, 2020

这篇文章主要介绍了python有序查找算法 二分法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2...

但是需要注意:

待查找的序列区间单调有序

例如需要查找有序数组arr里面的某个关键字key的位置,那么首先确认arr的中位数或者中点center,下面分为三种情况:

假如arr[center]>key,说明key在arr中心左边范围;

假如arr[center]<key,说明key在arr中心右边范围;

假如arr[center]=key,说明key在arr中心。

范围每次缩小一半,写个while的死循环知道找到为止。

二分法查找非常快且非常常用,但是唯一要求是要求数组是有序的

二分法的代码如下:

#!/usr/bin/python3.4
# -*- coding: utf-8 -*-

def BinarySearch(arr, key):
  # 记录数组的最高位和最低位
  min = 0
  max = len(arr) - 1

  if key in arr:
    # 建立一个死循环,直到找到key
    while True:
      # 得到中位数
      # 这里一定要加int,防止列表是偶数的时候出现浮点数据
      center = int((min + max) / 2)
      # key在数组左边
      if arr[center] > key:
        max = center - 1
      # key在数组右边
      elif arr[center] < key:
        min = center + 1
      # key在数组中间
      elif arr[center] == key:
        print(str(key) + "在数组里面的第" + str(center) + "个位置")
        return arr[center]
  else:
    print("没有该数字!")


if __name__ == "__main__":
  arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
  while True:
    key = input("请输入你要查找的数字:")
    if key == " ":
      print("谢谢使用!")
      break
    else:
      BinarySearch(arr, int(key))

运行结果:

python有序查找算法 二分法实例解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用异步Socket编程性能测试
Jun 25 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python新手实现2048小游戏
Mar 31 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
Python常用知识点汇总
May 08 Python
Python字符串处理实现单词反转
Jun 14 Python
pip命令无法使用的解决方法
Jun 12 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
python实现3D地图可视化
Mar 25 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 #Python
Python 解析pymysql模块操作数据库的方法
Feb 18 #Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 #Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 #Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 #Python
Python如何实现小程序 无限求和平均
Feb 18 #Python
python_mask_array的用法
Feb 18 #Python
You might like
php 生成随机验证码图片代码
2010/02/08 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
php跨域调用json的例子
2013/11/13 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
跟老齐学Python之模块的加载
2014/10/24 Python
Python爬取三国演义的实现方法
2016/09/12 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
后勤主管工作职责
2013/12/07 职场文书
考试不及格的检讨书
2014/01/22 职场文书
护理专业自荐书
2014/06/04 职场文书
大学生就业求职信
2014/06/12 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
教师学期末个人总结
2015/02/13 职场文书
呐喊读书笔记
2015/06/30 职场文书
培训心得体会怎么写
2016/01/25 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android