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 10 Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
用Python中的字典来处理索引统计的方法
May 05 Python
python虚拟环境迁移方法
Jan 03 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
Python动态语言与鸭子类型详解
Jul 01 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 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
优化php效率,提高php性能的一些方法
2011/03/24 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
Javascript----文件操作
2007/01/18 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
JQuery小知识
2010/10/15 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
Vue组件的使用教程详解
2018/01/05 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
JS实现简单tab选项卡切换
2019/10/25 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
python实现简单的购物程序代码实例
2020/03/03 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
房屋鉴定委托书范本
2014/09/23 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书