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连接oracle数据库实例
Oct 17 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python字符串格式化输出方法分析
Apr 13 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
Python实现不规则图形填充的思路
Feb 02 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
python pymysql库的常用操作
Oct 16 Python
Django url 路由匹配过程详解
Jan 22 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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 socket的讲解与实例分析
2013/06/13 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php画图实例
2014/11/05 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
js分页工具实例
2015/01/28 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JavaScript数组去重算法实例小结
2018/05/07 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
旅游管理毕业生自荐信范文
2014/03/19 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
2014年技术部工作总结
2014/12/12 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书