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实现从订阅源下载图片的方法
Mar 11 Python
Python编程之属性和方法实例详解
May 19 Python
使用Python中的tkinter模块作图的方法
Feb 07 Python
分分钟入门python语言
Mar 20 Python
python购物车程序简单代码
Apr 18 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
pandas 层次化索引的实现方法
Jul 06 Python
python对一个数向上取整的实例方法
Jun 18 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 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
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
python实现清屏的方法
2015/04/30 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
python使用zip将list转为json的方法
2018/12/31 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
python 深度学习中的4种激活函数
2020/09/18 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
毕业生欢送会主持词
2014/03/31 职场文书
保护环境建议书300字
2014/05/13 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
英语演讲开场白
2015/05/29 职场文书
金榜题名主持词
2015/07/02 职场文书
Spring实现内置监听器
2021/07/09 Java/Android