Python二分法搜索算法实例分析

 更新时间:2015年05月11日 16:06:55   作者:像风一样的自由  
这篇文章主要介绍了Python二分法搜索算法,实例分析了Python实现二分法的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例分析了Python二分法搜索算法。分享给大家供大家参考。具体分析如下:

今天看书时,书上提到二分法虽然道理简单,大家一听就明白但是真正能一次性写出别出错的实现还是比较难的,即使给了你充足的时间,比如1小时。如果你不是特别认真的话,可能还是会出一些这样那样的错误,所以就尝试了自己去实现一下,看能否一次通过,结果自然不言而喻,虽然用的时间不长,但是我失败了,呵呵。

个人觉得失败的最主要原因是自己没有认真的先想好这个思路和可能出现的分支情况,而是直接凭主观臆想就去写代码了,完全正中书上所说的行为,所以也如书上所说,出错了。后经调试应该是得到了基本的正确算法,内容如下:

#!/usr/bin/env python
#encoding: utf-8
def half_search(search_arr, search_str):
  lb = 0
  ub = len(search_arr) - 1
  for i in range(ub/2 + 1):
    if lb > ub:
      return -1
    mid = (ub + lb)/2
    if search_arr[mid] == search_str:
      return mid
    elif search_arr[mid] > search_str:
      ub = mid - 1
    else:
      lb = mid + 1
if __name__=='__main__':
  arr = [10,20,30,40,50,60,70]
  print half_search(arr, 1)
  print half_search(arr, 11)
  print half_search(arr, 22)
  print half_search(arr, 33)
  print half_search(arr, 40)
  print half_search(arr, 55)
  print half_search(arr, 66)
  print half_search(arr, 70)
  print half_search(arr, 8)

结果:

-1 
-1 
-1 
-1 
3 
-1 
-1 
6 
-1

正整数代表在数组中的下标,3那就是第4个位置;-1代表不存在

总结:

实现简单的算法之前,如果已经有了一套最简易的实现【比如直接打印100条相似的内容】,不妨要想想是否还有更精巧的实现【可否用循环+参数化替代】;实现稍微复杂点的算法时,不妨先在纸上画出各种可能的验证情况,避免实现是缺胳膊短腿的;还有一点就是算法什么的还是要多练,不然稍微复杂的过一阵可能就会忘记细节了。我想这就叫术业有专攻吧!

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

相关文章

  • python可视化数据分析pyecharts初步尝试

    python可视化数据分析pyecharts初步尝试

    这篇文章主要为大家介绍了python可视化数据分析pyecharts初步尝试,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Python 冒泡,选择,插入排序使用实例

    Python 冒泡,选择,插入排序使用实例

    这里简单介绍了下Python中冒泡,选择,插入排序的使用方法,推荐给需要的小伙伴们参考下。
    2015-02-02
  • 详解python读取和输出到txt

    详解python读取和输出到txt

    这篇文章主要介绍了python读取和输出到txt,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 上手简单,功能强大的Python爬虫框架——feapder

    上手简单,功能强大的Python爬虫框架——feapder

    这篇文章主要介绍了上手简单,功能强大的Python爬虫框架——feapder的使用教程,帮助大家更好的利用python进行爬虫,感兴趣的朋友可以了解下
    2021-04-04
  • python 中raise用法

    python 中raise用法

    这篇文章主要介绍了python 中raise用法,Python 允许我们在程序中手动设置异常,就是使用raise 语句来实现,下面我们就来看看raise的具体用法,文章内容介绍详细,具有一定的参考价值,需要的小伙伴可以参考一下
    2021-12-12
  • Python实现冒泡,插入,选择排序简单实例

    Python实现冒泡,插入,选择排序简单实例

    这篇文章主要介绍了Python实现冒泡,插入,选择排序简单实例,很适合Python初学者学习参考之用,需要的朋友可以参考下
    2014-08-08
  • python中eval的用法及说明

    python中eval的用法及说明

    这篇文章主要介绍了python中eval的用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • python 通过手机号识别出对应的微信性别(实例代码)

    python 通过手机号识别出对应的微信性别(实例代码)

    这篇文章主要介绍了python 通过手机号识别出对应的微信性别,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python linecache读取行更新的实现

    python linecache读取行更新的实现

    本文主要介绍了python linecache读取行更新的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • nginx+uwsgi+django环境搭建的方法步骤

    nginx+uwsgi+django环境搭建的方法步骤

    这篇文章主要介绍了nginx+uwsgi+django环境搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论