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生成日历实例解析
Aug 21 Python
python 计算文件的md5值实例
Jan 13 Python
一文总结学习Python的14张思维导图
Oct 17 Python
Python人脸识别初探
Dec 21 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
python django中8000端口被占用的解决
Dec 17 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
Python经典五人分鱼实例讲解
Jan 04 Python
实例详解Python的进程,线程和协程
Mar 13 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python OS模块常用函数说明
2015/05/23 Python
python查看模块安装位置的方法
2018/10/16 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
python的turtle库使用详解
2019/05/10 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
SQL面试题
2013/04/30 面试题
营销与策划专业毕业生求职信
2013/11/01 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
实习推荐信
2014/05/10 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
python实现层次聚类的方法
2021/11/01 Python