二分查找——递归与非递归
来源:互联网 发布:电脑设计软件 编辑:程序博客网 时间:2024/05/24 02:13
最近做了一道题目,在弄清原理之后发现怎么也过不去,找了几个小时的bug,结果问题就出现在二分查找的知识点上,暑假是有接触过二分的题目,应该是没有完全理解才会在昨天的那道题上碰钉子,借此写一下对二分的理解来巩固巩固以前的知识。
一谈起查找,最先想到的无非是遍历整组数据,复杂度为O(n),但是对于一组有规律的数据,比如按大小顺序排列的一组,这时再进行查找时就可以边比较边查找.首先从中间断开,比较中间的数值与待查找的x大小关系,若大于x,则x一定在整组数据的左边,反之,在右边,这样,每次查找只需查找数据的一半长度即可,直到找到为之返回元素所在的位置,那么总的复杂度就是O(log2n)。
递归:注意数组a是有序排列的
int A(int L,int R,int x)
{
int M=(L+R)/2;
if(a[M]==x)
return M;
else if(a[M]<x)//需要从右边查找
return A(M+1,R,x);
else
return A(L,M-1,x);//从左边查找
}
非递归:
int A(int L,int R,int x)
{
while(L<R)
{
int M=(L+R)/2;
if(a[M]==x)
return M;
else if(a[M]<x)
L=M+1;//查找右边
else
R=M-1;//查找左边
}
return -1;
}
{
while(L<R)
{
int M=(L+R)/2;
if(a[M]==x)
return M;
else if(a[M]<x)
L=M+1;//查找右边
else
R=M-1;//查找左边
}
return -1;
}
阅读全文
0 0
- 二分查找——递归与非递归
- 二分查找——递归与非递归
- 二分查找(递归与非递归)
- 二分查找递归与非递归总结
- 二分查找(递归与非递归)
- 递归与非递归进行二分查找
- 二分查找递归与非递归实现
- 二分查找递归与非递归算法
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找,递归与非递归实现
- 二分查找(递归与非递归)
- 二分查找的递归与非递归
- 二分查找的递归与非递归
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- [DeeplearningAI笔记]ML strategy_1_2开发测试集评价指标
- 服务器Tomcat 闪退问题解决方案
- [leetcode] 174. Dungeon Game
- 自定义导航栏HorizontalScrollView+RadioGroup实现
- centos7 firewalld 设置
- 二分查找——递归与非递归
- 为Eclipse开发工具安装Svn插件
- 欢迎使用CSDN-markdown编辑器
- HTML表格和选择
- 程序员的思考
- 针对jsp&servlet服务器遇到的404错误
- caffe分类小例子
- JavaEE之-Spring基本介绍
- 基于jquery的页面元素拖拽组件