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处理python编码问题
Mar 13 Python
python BeautifulSoup使用方法详解
Nov 21 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
Python虚拟环境Virtualenv使用教程
May 18 Python
python函数形参用法实例分析
Aug 04 Python
Python时间获取及转换知识汇总
Jan 11 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
django自带调试服务器的使用详解
Aug 29 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
python代码能做成软件吗
Jul 24 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
神经网络训练采用gpu设置的方式
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
3
2006/10/09 PHP
实用函数3
2007/11/08 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
python解析xml模块封装代码
2014/02/07 Python
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
浅谈flask源码之请求过程
2018/07/26 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
学校安全工作制度
2014/01/19 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
团日活动总结格式
2015/05/11 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫