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

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

使用前提:

这个数列是一个有序数列,也就是0,1,4,6,7,88这样的

原理:

给出一个范围l到r,然后不断利用mid=(l+r)缩小范围,每次只取分成两半后的其中一边减一点(减一点的意思是减1,比如说既然array[mid]不是答案,那么下一次边界不用mid而用mid旁边的那个)

时间复杂度:O(logn)

图解:

 

然后放代码:

这是一个返回,如果数列范围中有这个就返回1,否则返回0

int binary_search(int l,int r,int key){    while(l
array[mid])l=mid+1; else return 1; }    return 0;}

 比赛极速版

比赛的时候争分夺秒,哪怕懂原理,也最好一个算法的最短代码打到滚瓜烂熟,肯定是好的

int bs(int l,int r,int k){    while(l
a[d])l=d+1; else return 1; } return 0;}
int bs(int l,int r,int k){
while(l
a[d])l=d+1;else return 1;}return 0;}

 

转载于:https://www.cnblogs.com/zyacmer/p/10009460.html

你可能感兴趣的文章
汇编学习——使用Linux系统调用
查看>>
PagerTabStrip简单使用方式2
查看>>
SHELL脚本基础讲解
查看>>
PHP 数据库命令行的使用
查看>>
有赞公告设置
查看>>
win7系统开机遇到reboot and select proper boot device错误解决方法
查看>>
我的收藏
查看>>
配置静态路由实现两个公司网路互联
查看>>
boost mutex以及scoped_lock应用
查看>>
VMware Horizon 6 介绍
查看>>
ansible的使用
查看>>
2012年2月10日
查看>>
Linux下Web服务器应用之网站安全-https
查看>>
关于循环嵌套循环
查看>>
Scala中常见的容器 Option(选项)
查看>>
算法-蛇型矩阵
查看>>
路由交换IOS的备份与还原
查看>>
05.swift ?可选类型
查看>>
JavaSE 学习参考:方法的参数
查看>>
跟小博老师一起学习MyBatis ——MyBatis搭建运行环境
查看>>