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 相关文章推荐
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
python分数表示方式和写法
Jun 26 Python
python爬虫增加访问量的方法
Aug 22 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Python 如何测试文件是否存在
Jul 31 Python
python实现单机五子棋
Aug 28 Python
python 如何实现遗传算法
Sep 22 Python
详解Python中第三方库Faker
Sep 25 Python
python用Configobj模块读取配置文件
Sep 26 Python
Python基础知识之变量的详解
Apr 14 Python
Python办公自动化PPT批量转换操作
Sep 15 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全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
HTML node相关的一些资料整理
2010/01/01 Javascript
js更优雅的兼容
2010/08/12 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
js图片模糊切换显示特效的方法
2015/02/17 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
Python制作刷网页流量工具
2017/04/23 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python阶乘求和的代码详解
2020/02/14 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
寒假思想汇报
2014/01/10 职场文书
租房合同协议书
2014/04/09 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
政协会议宣传标语
2014/10/09 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
文言文辞职信
2015/02/28 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS