查找算法之二分查找的C++实现
作者:Struggler09 时间:2022-05-27 07:24:17
二分查找
二分查找算法,说白了就是在有序的数组里面给予一个存在数组里面的值key,然后将其先和数组中间的比较,如果key大于中间值,进行下一次mid后面的比较,直到找到相等的,就可以得到它的位置。
前提:线性表中的记录必须是关键字有序(通常从小到大),线性表必须采用顺序存储。
基本思想:取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;否则,在右半区查找。不断重复,直到查找成功或查找失败为止。
#include<iostream>
#include<stdio.h>
#define N 10
using namespace std;
int main()
{
int a[N],front,end,mid,i,x;
cout<<"请输入已经排好的序列10个:"<<endl;
for(i=0;i<N;i++)
{
cin>>a[i];
}
cout<<"请输入要查询的数字x"<<endl;
cin>>x;
front=0;
end=N-1;
mid=(front+end)/2;
while(front<end&&a[mid]!=x)
{
if(a[mid]>x) end=mid-1;
if(a[mid]<x) front=mid+1;
mid=(front+end)/2;
}
if(a[mid]!=x)
{
printf("找不到该数字!");
}
else
{
printf("找到了,该数字在第%d位置",mid+1);
}
return 0;
}
后记:
查找和排序都是在程序设计中经常用到的算法,查找相对而言较为简单,不外乎顺序查找、二分查找、哈希表查找和二叉排序树查找。
在面试的时候,不管是用循环还是用递归,面试官都期待应聘者能够信手拈来写出完整的二分查找代码,否则可能连继续面试的兴趣都没有。
来源:https://blog.csdn.net/qq_39486027/article/details/79647428
标签:c++,二分查找,算法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解
2023-11-14 00:27:55
![](https://img.aspxhome.com/file/2023/5/58985_0s.png)
Java利用cors实现跨域请求实例
2023-02-24 14:57:35
Java语法关于泛型与类型擦除的分析
2023-12-22 06:15:22
![](https://img.aspxhome.com/file/2023/9/86719_0s.png)
Android 仿硅谷新闻下拉刷新/上拉加载更多
2023-03-25 14:19:11
C#实现串口示波器
2021-08-26 02:02:32
![](https://img.aspxhome.com/file/2023/2/98252_0s.jpg)
Java利用Zxing生成二维码的简单实例
2023-08-21 13:16:26
Android学习之AppWidget笔记分享
2022-04-10 21:25:46
![](https://img.aspxhome.com/file/2023/0/123320_0s.png)
深入理解C#之继承
2022-02-25 07:25:44
一文搞懂C#实现读写文本文件中的数据
2021-11-07 00:21:07
![](https://img.aspxhome.com/file/2023/8/87048_0s.png)
Ajax登录验证实现代码
2022-02-22 10:47:51
c# volatile 关键字的拾遗补漏
2022-10-20 04:39:09
![](https://img.aspxhome.com/file/2023/2/113882_0s.png)
java实现发送邮件的示例代码
2023-07-04 17:00:54
![](https://img.aspxhome.com/file/2023/6/68216_0s.png)
IDEA2022版本创建maven web项目的两种方式详解
2022-04-24 19:34:54
![](https://img.aspxhome.com/file/2023/5/84785_0s.jpg)
SpringBoot SpEL语法扫盲与查询手册的实现
2022-06-02 23:52:39
Springboot通过run启动web应用的方法
2021-08-30 01:57:37
![](https://img.aspxhome.com/file/2023/7/64527_0s.png)
Java 中的抽象介绍
2023-03-27 06:10:20
springboot全局异常处理代码实例
2023-02-05 20:41:36
Java SWT中常见弹出框实例总结
2023-08-22 00:42:22
![](https://img.aspxhome.com/file/2023/9/93349_0s.png)
Java servlet后端开发超详细教程
2022-11-01 06:13:50
![](https://img.aspxhome.com/file/2023/1/113471_0s.png)
java使用@Scheduled注解执行定时任务
2021-09-16 08:37:16
![](https://img.aspxhome.com/file/2023/6/65786_0s.jpg)