二分查找的C++实现

1.递归实现

 

  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5. int BSearch(int *a,int key,int low,int high)
  6. {
  7.     int mid;
  8.     if(low>high)
  9.         return -1;
  10.     mid=(low+high)/2;
  11.     if(key==a[mid])
  12.         return mid;
  13.     if(key<a[mid])
  14.         return BSearch(&a[0],key,low,mid-1);
  15.     if(key>a[mid])
  16.         return BSearch(&a[0],key,mid+1,high);
  17. }
  18. void main()
  19. {
  20.     int key;
  21.     //cout<<"please input the number"<<endl;
  22.     int a[10]={1,2,3,4,5,8,9,10,11,21};
  23.     cout<<"please input the number"<<endl;
  24.     cin>>key;
  25.     cout<<BSearch(&a[0],key,0,9)<<endl;
  26. }

2.非递归实现

  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5. int BSearch(int *a,int key,int low,int high)
  6. {
  7.     while(low<=high)
  8.     {
  9.         int mid=(low+high)/2;
  10.         if(key==a[mid])
  11.             return mid;
  12.         if(key>a[mid])
  13.         {
  14.             low=mid+1;
  15.         }
  16.         if(key<a[mid])
  17.         {
  18.             high=mid-1;
  19.         }
  20.     }
  21.     return -1;
  22. }
  23. void main()
  24. {
  25.     int key;
  26.     //cout<<"please input the number"<<endl;
  27.     int a[10]={1,2,3,4,5,8,9,10,11,21};
  28.     cout<<"please input the number"<<endl;
  29.     cin>>key;
  30.     cout<<BSearch(&a[0],key,0,9)<<endl;
  31. }

你可能感兴趣的:(二分查找的C++实现)