最近打算研究一下基础的算法,就先从二分开始做吧,三种方法

#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

三种方法实现二分查找相关推荐

  1. excel 多条件查找三种方法:lookup、vlookup、indexmatch 多条件查找案例

    最近在Excel微信学习交流群中收到某位学员的问题咨询,问题是如何返回单据编号和物料长代码对应的含税数额.如下表: 其实这位学员的问题就是excel的多条件查找问题. 下面通过一个实例跟大家分享一下常 ...

  2. Altium Designer16.0中查找元器件的三种方法

    Altium Designer16.0中查找元器件的三种方法 方法一:在已知库中查找 1 这个方法仅适用于已知元器件所在的库的情况.如果已知某个元器件在某个库中,那么只需在那个库中进行查找即可.下面以 ...

  3. 查找android studio版本号,Android studio版本号查看的三种方法

    Android studio版本号查看的三种方法 发布于 2016-04-10 22:50:17 | 688 次阅读 | 评论: 0 | 来源: 网友投递 Android Studio Android ...

  4. python求平方根的三种方法

    python求平方根的三种方法 题干描述 题目解答 题干描述 没啥好说的qwq,求根号下x,并舍弃小数部分,只保留整数 题目解答 方法一:不多bb,直接0.5次方(这应该是最没有营养的解法,面试官估计 ...

  5. 在JavaScript中重复字符串的三种方法

    In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...

  6. Python课堂:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...

  7. Matlab中数组元素引用——三种方法

    Matlab中数组元素引用--三种方法 1.Matlab中数组元素引用有三种方法 1 2 3 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 注意:在使用这 ...

  8. latex自动生成中文目录_自动生成工作表目录三种方法,看哪种适合你?

    如果在一个工作簿内有很多工作表需要去维护管理,一个个的查找显然是很麻烦的,建立一个工作表的导航目录无疑是最便捷的方法. 下面介绍三种生成工作表目录的方法: 一.利用宏表函数生成可导航目录 第1步:定义 ...

  9. Python:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1255).(02 ...

最新文章

  1. 操作系统学习2:操作系统的发展和概览
  2. 高级网络配置《 bond team桥接 》的建立
  3. scrapy爬虫框架初相识
  4. 神器:REST测试工具[wiztools.org restclient]客户端Jar依赖Java安装环境
  5. CIO能够对我们的社会起到什么作用?
  6. sql server 清空数据库表数据
  7. RPA学习-关于读 csv 文件报错问题
  8. 第二轮冲刺-Runner站立会议04
  9. 子元素的margin-top影响父元素原因和解决办法
  10. tbb flow graph node types
  11. [css] rgba()和opacity这两个的透明效果有什么区别呢?
  12. tcp,udp报文最大长度
  13. matlab | 与 || 的区别
  14. @程序员,为什么选择 Racket 语言?
  15. 3.Maven实战 --- maven使用入门
  16. 【知识点总结】大数据技术原理与应用
  17. 傅里叶变换的相关实验——matlab实现
  18. 化学元素周期表外层电子排列规律
  19. 上个月一位朋友买到翻新N80手机 淘宝充斥奸商假货 【该奸商为四钻】
  20. 光伏发电并网matlab/simulink仿真,带PLL锁相环,逆变器控制,最大功率控制MPPT,BOOST升压电路

热门文章

  1. 螃蟹保存方法保存时间_蜂巢蜜应该怎么保存,蜂巢蜜怎么保存的时间更长
  2. html5光标进去默认值消失,html点击input没有出现光标怎么办
  3. java接口返回类,Java接口和返回类型 - java
  4. 腐蚀rust电脑分辨率调多少_腐蚀Rust画面怎么设置 _游侠网
  5. [已解决] org.hibernate.AnnotationException:未为实体类指定标识符
  6. python中rjust_Python字符串rjust()和ljust()
  7. android 开发套件_Android套件
  8. passwd命令修改密码_Linux passwd命令–更改用户密码
  9. CAA创建自定义CATIA工具栏按钮和菜单
  10. VS2022找不到Microsoft.Expression.Interactions.dll