linux下练习 c++ 二分查找-阿里云开发者社区

开发者社区> 真爱无限> 正文

linux下练习 c++ 二分查找

简介: #include using namespace std; class person { string name; int age; public: person(const char* n,int a):name(n),age(a){} friend bool operator b.
+关注继续查看
#include<iostream>
using namespace std;
class person
{
	string name;
	int age;
public:
	person(const char* n,int a):name(n),age(a){}
	friend bool operator <(const person& a,const person& b)//运算符重载-比较年龄大小
	{
		return a.age<b.age;
	}
	friend bool operator >(const person& a,const person& b)//运算符重载-比较年龄大小
	{
		return a.age>b.age;
	}
	friend bool operator ==(const person& a,const person& b)//运算符重载-等于号
	{
		return a.age==b.age;
	}
	friend ostream& operator<<(ostream& o,const person& a)//运算符重载-输出
	{
		o<<a.name<<":"<<a.age<<endl;
	}
};
person* bsearch(person* a,int n,const int age)//二分查找
{
	if(n<=0) return NULL;
	int mid=n/2;
	person p("",age);
	if(a[mid]==p) return a+mid;
	if(p<a[mid]) return bsearch(a,mid,age);
	else return bsearch(a+mid+1,n-mid-1,age);
	
}
person* bsearch2(person* a,int n,const int age)//二分查找
{
	int b=0,e=n-1;
	person t("",age);
	while(b<=e)
	{
		int mid=(b+e)/2;
		if(a[mid]==t) return a+mid;
		if(t<a[mid]) e=mid-1;
		else b=mid+1;
	}
	return NULL;
	
}
int main()
{
	person a[5]={person("a1",34),
				person("a2",25),
				person("a3",16),
				person("a4",77),
				person("a5",40)};
	for(int i=0;i<5;i++)//排序
	{
		for(int j=i+1;j<5;j++)
			if(a[j]<a[i]) swap(a[j],a[i]);
	}
	for(int i=0;i<5;i++)
		cout<<a[i];
	int fage;
	cout<<"请输入要查找的年龄:";
	cin>>fage;
	person* p=bsearch2(a,5,fage);//查找
	if(p!=NULL) cout<<*p;
	else cout<<"未找到!\n";
}


g++ -o bsearch.out bsearch.cpp

bsearch.out

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
二分查找算法
十大算法之二分查找: 二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:     1.第一步查找中间元素,即5,由于56,则6应该在7左边的数组元素中,那么只剩下6,即找到了。
639 0
Linux 查找大文件
命令行如下 find. -type f -size+100M Linux系统下查找大文件或目录的技巧 当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢?以易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详...
693 0
查找一 线性表的查找
查找的基本概念   什么是查找? 查找是根据给定的某个值,在表中确定一个关键字的值等于给定值的记录或数据元素。   查找算法的分类 若在查找的同时对表记录做修改操作(如插入和删除),则相应的表称之为动态查找表; 否则,称之为静态查找表。
816 0
二分法查找
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.
937 0
+关注
真爱无限
主要技术.net sqlserver mysql。
302
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载