三种方法实现二分查找
最近打算研究一下基础的算法,就先从二分开始做吧,三种方法
#include <bits/stdc++.h>
using namespace std;const int MAXN = 1024;
int num[MAXN];//生成测试数据
void init()
{for(int i = 0; i < MAXN; i++)num[i] = i * 3;
}//循环查找
int query1(int n)
{int l = 0, r = MAXN;while(l <= r){int mid = (l + r) >> 1;if(num[mid]==n) return mid;else if(num[mid]<n) l = mid + 1;else r = mid - 1;}return -1;
}//递归查找
int query2(int l, int r, int n)
{if(l > r) return -1;int mid = (l + r) >> 1;if(num[mid]==n) return mid;else if(num[mid] < n) return query2(mid + 1, r, n);else return query2(l, mid-1, n);
}//STL查找
int query3(int n)
{if(!binary_search(num, num+MAXN, n))return -1;return lower_bound(num, num+MAXN, n) - num;
}void run()
{int n;printf("\n输入要查找的数:");cin >> n;printf("%d 的下标为:\n", n); //输出-1为不存在cout << "循环查找:" << query1(n) << endl;cout << "递归查找:" << query2(0, MAXN, n) << endl;cout << "STL查找:" << query3(n) << endl;run();
}int main()
{init();run();return 0;
}
转载于:https://www.cnblogs.com/kunsoft/p/5312752.html
三种方法实现二分查找相关推荐
- excel 多条件查找三种方法:lookup、vlookup、indexmatch 多条件查找案例
最近在Excel微信学习交流群中收到某位学员的问题咨询,问题是如何返回单据编号和物料长代码对应的含税数额.如下表: 其实这位学员的问题就是excel的多条件查找问题. 下面通过一个实例跟大家分享一下常 ...
- Altium Designer16.0中查找元器件的三种方法
Altium Designer16.0中查找元器件的三种方法 方法一:在已知库中查找 1 这个方法仅适用于已知元器件所在的库的情况.如果已知某个元器件在某个库中,那么只需在那个库中进行查找即可.下面以 ...
- 查找android studio版本号,Android studio版本号查看的三种方法
Android studio版本号查看的三种方法 发布于 2016-04-10 22:50:17 | 688 次阅读 | 评论: 0 | 来源: 网友投递 Android Studio Android ...
- python求平方根的三种方法
python求平方根的三种方法 题干描述 题目解答 题干描述 没啥好说的qwq,求根号下x,并舍弃小数部分,只保留整数 题目解答 方法一:不多bb,直接0.5次方(这应该是最没有营养的解法,面试官估计 ...
- 在JavaScript中重复字符串的三种方法
In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...
- Python课堂:判定IP地址合法性的三种方法
IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...
- Matlab中数组元素引用——三种方法
Matlab中数组元素引用--三种方法 1.Matlab中数组元素引用有三种方法 1 2 3 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 注意:在使用这 ...
- latex自动生成中文目录_自动生成工作表目录三种方法,看哪种适合你?
如果在一个工作簿内有很多工作表需要去维护管理,一个个的查找显然是很麻烦的,建立一个工作表的导航目录无疑是最便捷的方法. 下面介绍三种生成工作表目录的方法: 一.利用宏表函数生成可导航目录 第1步:定义 ...
- Python:判定IP地址合法性的三种方法
IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1255).(02 ...
最新文章
- 操作系统学习2:操作系统的发展和概览
- 高级网络配置《 bond team桥接 》的建立
- scrapy爬虫框架初相识
- 神器:REST测试工具[wiztools.org restclient]客户端Jar依赖Java安装环境
- CIO能够对我们的社会起到什么作用?
- sql server 清空数据库表数据
- RPA学习-关于读 csv 文件报错问题
- 第二轮冲刺-Runner站立会议04
- 子元素的margin-top影响父元素原因和解决办法
- tbb flow graph node types
- [css] rgba()和opacity这两个的透明效果有什么区别呢?
- tcp,udp报文最大长度
- matlab | 与 || 的区别
- @程序员,为什么选择 Racket 语言?
- 3.Maven实战 --- maven使用入门
- 【知识点总结】大数据技术原理与应用
- 傅里叶变换的相关实验——matlab实现
- 化学元素周期表外层电子排列规律
- 上个月一位朋友买到翻新N80手机 淘宝充斥奸商假货 【该奸商为四钻】
- 光伏发电并网matlab/simulink仿真,带PLL锁相环,逆变器控制,最大功率控制MPPT,BOOST升压电路
热门文章
- 螃蟹保存方法保存时间_蜂巢蜜应该怎么保存,蜂巢蜜怎么保存的时间更长
- html5光标进去默认值消失,html点击input没有出现光标怎么办
- java接口返回类,Java接口和返回类型 - java
- 腐蚀rust电脑分辨率调多少_腐蚀Rust画面怎么设置 _游侠网
- [已解决] org.hibernate.AnnotationException:未为实体类指定标识符
- python中rjust_Python字符串rjust()和ljust()
- android 开发套件_Android套件
- passwd命令修改密码_Linux passwd命令–更改用户密码
- CAA创建自定义CATIA工具栏按钮和菜单
- VS2022找不到Microsoft.Expression.Interactions.dll