[DS&A]二分法查找

来源:互联网 发布:儿童绘画软件 绿色 编辑:程序博客网 时间:2024/06/05 13:25

二分法查找:适用于有序的顺序序列。

#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std;class Person{private:  string name;  int age;  public:  Person(const char* name,int age):name(name),age(age){}    friend bool operator>(Person &a,Person &b)  {return a.name > b.name;}    friend bool operator==(Person &a,Person &b)  {return a.name==b.name;}    friend ostream& operator<<(ostream& os,Person &p)  {cout << p.name << "-" << p.age << endl;return os;  }    };int bsearch(Person a[],int left,int right,const string str){  Person p(str.c_str(),0);  while(left < right)  {int mid = (left+right)/2;if(p == a[mid]) return mid;else if(p > a[mid] ) bsearch(a,mid+1,right,str);else bsearch(a,left,mid-1,str);   }  return -1;}bool bubblesort(Person a[],int n){  bool flag =true;  while(flag)  {flag = false;for(int i = 0; i < n-1 ; i++){  if(a[i] > a[i+1])  {swap(a[i],a[i+1]);flag = true;  }}--n;  }}int main(){  Person p[3]={ {"chunge",28},{"zengge",29}, {"furong",50}};  bubblesort(p ,3);  for(int i = 0; i < 3 ;i++)cout << p[i] << " ";  cout << endl;  int i = bsearch(p,0,2,"furong");  cout << i;  return 0;}
输出结果:



0 0
原创粉丝点击