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远程登录代码
Apr 29 Python
Python的加密模块md5、sha、crypt使用实例
Sep 28 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
简单了解python PEP的一些知识
Jul 13 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python类super()及私有属性原理解析
Jun 15 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
python开发实时可视化仪表盘的示例
May 07 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实现的封装验证码类详解
2013/06/18 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
vue组件间通信解析
2017/03/01 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
python实现KNN近邻算法
2020/12/30 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
会计专业大学生求职信范文
2014/01/28 职场文书
前台文员职责范本
2014/03/07 职场文书
产品生产计划书
2014/05/07 职场文书
个人创业事迹材料
2014/12/30 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
护士节慰问信
2015/02/15 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python