二分查找
来源:互联网 发布:php抽象类可以实例化吗 编辑:程序博客网 时间:2024/04/29 06:14
二分查找是一个时间复杂度为logn的算法。
它主要是从一个有序的数组中查找某一个数字是否在其中
算法分析:
一切尽在代码中。
附上
#include<iostream>#include<algorithm>using namespace std;int a[1000];int n;int x;int find(int l,int r){ int mid=(l+r)/2;//取带查找的区间的中间点 if(a[mid]==x)//如果中间对应的数字是要查找的数字,输出Yes,结束程序。 { cout<<"Yes"; return 0; } if(l>r)//如果当前的左端点的下标大于右端点的下标,则代表没有找到,至于为什么见下方。 { cout<<"No"; return 0; } if(x<a[mid])//如果当前要查找的数字比中间点所对应的数字小,则查找由l到mid-1的区间。 //因为mid所对应的数字已经和x比对过,是比x小,所以取mid-1。 //回答第15行的问题,因为当查找到区间左端点和右端点重合时,中间点就是这个点,所以 //如果中间点的值不于x相等话,那么,不论是查找mid-1还是mid+1,都会出现左端点的下标大于右端点的下标, //此时就是没有找到。 find(l,mid-1); else find(mid+1,r);}int main (){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n);//对要查找的数组进行排序。 cin>>x;// 要查找的数字 find(1,n); return 0;}
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- DES算法的C语言实现 (《信息网络安全》作业)
- 同一个世界 两世之约 虚空 攻略
- Spring使用静态工厂方法创建Bean(一)
- 浅析C++容器
- 同一个世界 两世之约 禁忌 攻略
- 二分查找
- 同一个世界 两世之约 困境 攻略
- C/C++二维数组名和二级指针
- 前端之路与面试总结
- 同一个世界 两世之约 道路 攻略
- 同一个世界 两世之约 顺意 攻略
- 安阳好一座魅力古城!
- 同一个世界 两世之约 萌芽 攻略
- C++实现用户自定义类