Python有序查找算法之二分法实例分析

 更新时间:2017年12月11日 14:10:05   作者:叮了咣当  
这篇文章主要介绍了Python有序查找算法之二分法,结合实例形式分析了Python二分查找算法的原理与相关实现技巧,需要的朋友可以参考下

本文实例讲述了Python有序查找算法之二分法。分享给大家供大家参考,具体如下:

二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2...

例如需要查找有序数组arr里面的某个关键字key的位置,那么首先确认arr的中位数或者中点center,下面分为三种情况:

① 假如arr[center]>key,说明key在arr中心左边范围;
② 假如arr[center]<key,说明key在arr中心右边范围;
③ 假如arr[center]=key,说明key在arr中心。

范围每次缩小一半,写个while的死循环知道找到为止。

二分法查找非常快且非常常用,但是唯一要求是要求数组是有序的

前面一篇冒泡排序可以去看看:

https://www.jb51.net/article/130288.htm

二分法的代码如下:

# -*- 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__":
 print("脚本之家测试结果:")
 arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
 while True:
  key = raw_input("请输入你要查找的数字:")
  if key == " ":
   print("谢谢使用!")
   break
  else:
   BinarySearch(arr, int(key))

运行结果:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python连接和操作Elasticsearch的详细指南

    Python连接和操作Elasticsearch的详细指南

    Elasticsearch 是一个强大的搜索引擎,广泛应用于数据存储和搜索场景,通过 Python,我们可以方便地与 Elasticsearch 进行交互,本文将详细介绍如何在本地使用 Python 连接到服务器上的 Elasticsearch,并进行基本的操作,需要的朋友可以参考下
    2024-12-12
  • python tornado协程调度原理示例解析

    python tornado协程调度原理示例解析

    这篇文章主要为大家介绍了python tornado协程调度原理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 利用python获取某年中每个月的第一天和最后一天

    利用python获取某年中每个月的第一天和最后一天

    最近在做项目的时候,突然想到的这个问题,觉得比较有趣,就实际测试了一下,考虑到以后可能会有用,就总结下来写了这篇文章,刚兴趣的朋友们可以参考学习下,下面来跟着小编一起看看吧。
    2016-12-12
  • 浅谈Python中的函数(def)及参数传递操作

    浅谈Python中的函数(def)及参数传递操作

    这篇文章主要介绍了浅谈Python中的函数(def)及参数传递操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)

    selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)

    这篇文章主要介绍了selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 对python中list的拷贝与numpy的array的拷贝详解

    对python中list的拷贝与numpy的array的拷贝详解

    今天小编就为大家分享一篇对python中list的拷贝与numpy的array的拷贝详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 使用Python快速进行Excel合并的几种场景

    使用Python快速进行Excel合并的几种场景

    由于工作需要,客户需要将多个excel文件合并成一个excel中,下面这篇文章主要给大家介绍了关于使用Python快速进行Excel合并的几种场景,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • OpenCV学习记录python实现连通域处理函数

    OpenCV学习记录python实现连通域处理函数

    这篇文章主要为大家介绍了OpenCV学习记录python实现连通域处理函数cv2.connectedComponentsWithStats()和cv2.connectedComponents()的使用示例详解
    2022-06-06
  • Python实现屏幕录制功能的代码

    Python实现屏幕录制功能的代码

    这篇文章主要介绍了Python实现屏幕录制功能,本文给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Python实现单例模式的四种方式详解

    Python实现单例模式的四种方式详解

    单例模式可以保证一个类仅有一个实例,并提供一个访问它的全局访问点。本文为大家介绍了Python实现单例模式的四种方式,需要的可以参考一下
    2022-05-05

最新评论