博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
折半查找
阅读量:5315 次
发布时间:2019-06-14

本文共 581 字,大约阅读时间需要 1 分钟。

  折半查找(二分查找)是个常用基础算法了。个人觉得主要注意事项就是不要写递归吧。其实实际应用中递归能不用就不用,压栈出栈效率较低而且递归层级太多容易爆栈。

  只要分别维护一个指向当前首尾的值即可消除递归。

  实现: 传入一个数组arr(已升序排序)和要找的值k。找到了返回下标,找不到返回-1.

def bsearch(arr, k):    begin = 0    end = len(arr) - 1    while begin < end - 1:        peak = (begin + end) // 2        if arr[peak] == k:            return peak        elif arr[peak] > k:            end = peak        else:            begin = peak    if arr[begin] != k and arr[end] != k:        return -1    elif arr[begin] == k:        return begin    else:        return end

 

转载于:https://www.cnblogs.com/sleepcc/p/6058556.html

你可能感兴趣的文章
<转>.h和.cpp文件的区别
查看>>
[转]svn常用命令
查看>>
Swing学习1——总体概述
查看>>
nginx 注释配置及详解
查看>>
QCustomplot(一) 能做什么事
查看>>
vue1.0和vue2.0生命周期----整理一
查看>>
Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config
查看>>
对象的成员的初始化
查看>>
zbb20180710 maven Failed to read artifact descriptor--maven
查看>>
关于Webapp的注意事项
查看>>
使用JDBC进行数据库的事务操作(2)
查看>>
HDU 3966 Aragorn's Story (树链剖分+线段树)
查看>>
MIME协议(三) -- MIME邮件的组织结构
查看>>
javascript:设置URL参数的方法,适合多条件查询
查看>>
javascript获取URL查询字符串
查看>>
大型网站架构演化(二)——应用服务和数据服务分离
查看>>
最近沉迷生意经
查看>>
BZOJ1787 [Ahoi2008]Meet 紧急集合 LCA
查看>>
ThinkPHP讲解(十二)——文本编辑器和ajax传址
查看>>
MySQL For RedHat Linux(源码安装,附安装包)
查看>>