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之永远强大的函数
Sep 14 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
给我一面国旗 python帮你实现
Sep 30 Python
Flask中endpoint的理解(小结)
Dec 11 Python
python实现简单贪吃蛇游戏
Sep 29 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php实现的mongodb操作类
2015/05/28 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
php单例模式的简单实现方法
2016/06/10 PHP
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
js Function类型
2011/12/04 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
python自动化测试实例解析
2014/09/28 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
python 代码运行时间获取方式详解
2020/09/18 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
师范生实习的个人自我鉴定
2013/10/20 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
第二次离婚起诉书
2015/05/18 职场文书
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js