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 相关文章推荐
Python2.x与Python3.x的区别
Jan 14 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
python编程实现归并排序
Apr 14 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
详解python读取和输出到txt
Mar 29 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
浅谈Python类的单继承相关知识
May 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 MVC模式在网站架构中的实现分析
2010/03/04 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
python3实现多线程聊天室
2018/12/12 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
学生发电厂实习自我鉴定
2013/09/22 职场文书
任长霞观后感
2015/06/16 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL