首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

linux上练习 c++ 二分查找

2012-10-14 
linux下练习 c++ 二分查找#includeiostreamusing namespace stdclass person{string nameint agepubl

linux下练习 c++ 二分查找

#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

 

linux上练习 c++ 二分查找

 

热点排行