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实现统计代码行数的方法
May 22 Python
Django基础之Model操作步骤(介绍)
May 27 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
python ipset管理 增删白名单的方法
Jan 14 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
Python sorted对list和dict排序
Jun 09 Python
python 三种方法实现对Excel表格的读写
Nov 19 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中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
对Python中plt的画图函数详解
2018/11/07 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
英国二手物品交易网站:Preloved
2017/10/06 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
医院门卫岗位职责
2013/12/30 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
药店收银员岗位职责
2015/04/07 职场文书
生日赠语
2015/06/23 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
开业庆典致辞
2015/08/01 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技