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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
在Django框架中运行Python应用全攻略
Jul 17 Python
Python算术运算符实例详解
May 31 Python
PyQt5每天必学之事件与信号
Apr 20 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
简单了解python的break、continue、pass
Jul 08 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
django model object序列化实例
Mar 13 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
python怎么判断素数
Jul 01 Python
通过代码实例解析Pytest运行流程
Aug 20 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php基础知识:函数基础知识
2006/12/13 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
js实现简单的打印表格
2020/01/15 Javascript
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
django连接oracle时setting 配置方法
2019/08/29 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
土木工程毕业生自荐信
2013/09/21 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server