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和php通信乱码问题解决方法
Apr 15 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
Python中的urllib模块使用详解
Jul 07 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
python线程、进程和协程详解
Jul 19 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
Python自定义线程类简单示例
Mar 23 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
python二进制文件的转译详解
Jul 03 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
python绘图模块之利用turtle画图
Feb 12 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
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
基于Python的身份证号码自动生成程序
2014/08/15 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
业务员岗位职责范本
2013/12/15 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript