二分搜索算法python,一个运用二分查找算法

  二分搜索算法python,一个运用二分查找算法

  二进制搜索,也称为二分搜索法,是一种高效的搜索方法。本文将介绍python如何实现二分搜索法算法,帮助您更好地理解和使用python。感兴趣的朋友可以了解一下。

  00-1010 1.算法描述2。算法分析3。算法思路4。代码实现纯算法实现递归方法实现

  

目录

  二分法是一种有效的搜索方法。

  回想一下自己以前做过的猜数字的小游戏,事先给一个小于100的正整数X,这样就可以猜出游戏的大小,并询问如何快速猜出。

  我们之前玩的游戏被给了10次机会。如果我们学习二分搜索法方法,不管数字是什么,最多只需要猜7次。

  

1. 算法描述

  1.它必须是一个有序的序列。

  2.对数据的大小有要求。

  数据量对于二分搜索法来说太小,效率提升相对于直接遍历并不明显。

  如果数据量太大,就不适合二分搜索法,因为阵列需要连续的内存空间。如果数据量过大,往往无法找到连续的内存空间来存储如此大规模的数据。

  

2. 算法分析

  假设有一个有序列表如下:3360

  请问数字11在这个列表中吗,如果是,它的索引值是多少?

  

3. 算法思路

  

4. 代码实现

  实现代码

  arr_list=[5,7,11,22,27,33,39,52,58]

  #要查找的号码

  seek_number=11

  #一共救了几次。

  计数=0

  #列表左侧的索引

  左=0

  #列表右侧的索引

  right=len(arr_list) - 1

  #当左索引小于或等于右索引时

  而左=右:

  #取中间的索引位置

  middle=(左右)//2

  #累计搜索次数。

  计数=1

  #如果您要查找的数字大于中间的数字

  if seek _ number arr _ list[middle]:

  #左索引是中间索引1。

  左=中间1

  #如果你要找的数字比中间的数字小

  elif seek _ number arr _ list[middle]:

  #右索引是中间索引-1。

  右=中间- 1

  #如果等于中间索引数据

  else:

  Print(找到编号:%s,索引值为:%s% (seek_number,middle))

  破裂

  else:

  打印(“找不到编号% s“% seek _ number”)

  打印(花费了:%s次查找 %计数)

  运行结果

  

纯算法实现

  变量计数在循环中定义。如果count在第一次循环后没有变化,这意味着输入是一个有序序列。这时,我们直接返回退出循环。此时时间复杂度为O(n)

  实现代码

  arr_list=[5,7,11,22,27,33,39,52,58]

  def二进制搜索(seek_number,left,right):

  如果左=右:

  middle=(左右)//2

  if seek _ number arr _ list[middle]:

  右=中间- 1

  elif seek _ number arr _ list[middle]:

  左=中间1

  else:

  返回中间

  #进行递归调用

  返回binary_search(seek_number,left,right)

  #当左索引大于右索引时,表示没有找到。

  else:

  返回-1

  #要查找的号码

  seek_number=11

  #列表左侧的索引

  左=0

  #列表右侧的索引

  right=len(arr_list) - 1

  Print(找到的编号:%s,索引:% s% (seek _ number,binary _ search (seek _ number,left,right)))

  运行结果

  以上是Python算法练习二分搜索法算法实现的详细内容。更多关于Python二分搜索法算法的信息,请关注热门IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: