二分搜索算法细节

来源:互联网 发布:数控车床编程实例大全 编辑:程序博客网 时间:2024/04/30 03:25
//二分法搜索,返回x在a[]中的位置,如果没有找到,返回-1,a[]是有序的,n为元素个数n>1,x为待查元素int bisearch(int a[],int n,int x){int low,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2;if(x==a[mid])break;x<a[mid]?high=mid-1:low=mid+1;}if(low>high)return -1;return mid;}

//方法2:

int bSearch(int begin, int end, int e)  {      int mid, left = begin, right = end;      while(left <= right)      {          mid = (left + right) >> 1;          if(num[mid] >= e) right = mid - 1;          else left = mid + 1;      }      return left;  }

int bSearch(int begin, int end, int e)  {      int mid, left = begin, right = end;      while(left <= right)      {          mid = (left + right) >> 1;          if(num[mid] > e) right = mid - 1;          else left = mid + 1;      }      return right;  }  



原创粉丝点击