二分搜索算法python,Python二分法查找

  二分搜索算法python,Python二分法查找

  本文为大家带来了一些关于python的知识,主要梳理了二分搜索法算法的相关问题,包括算法描述、算法分析、算法思想等等。下面就来看看吧,希望对你有帮助。

  推荐:python视频教程

  00-1010二分法是一种高效的搜索方法。

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

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

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

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

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

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

  00-1010假设存在如下有序列表3360

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

  00-1010实施代码:

  Arr _ list=[5,7,11,22,27,33,39,52,58] #数字查找seek_number=11#保存多少次?count=0# List左索引left=0# List右索引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))

  breakelse:

  打印(编号%s未找到 %seek _ number )打印(用了% s次找到 % count )运行结果:

  00-1010定义循环中的变量计数。如果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:

  Return middle #进行递归调用

  返回binary_search(seek_number,left,right)

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

  else:

  Return -1#查找的数字=11 #列表的左索引=0 #列表的右索引=len (arr _ list)-1print(查找的数字:%s,索引:% s% (seek _ number,binary _ search (seek _ number,Left,Right))

  推荐:python视频教程以上是Python详细分析二分搜索法算法的详细内容。更多信息请关注盛行IT软件开发工作室的其他相关文章!

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

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