首页 > 代码库 > 二分查找
二分查找
标准的二分查找:binary_search
int bsearch(int a[],int l,int r,int x){ int m; while(l<=r){ m = (l+r)/2; // m = l+(r-l)>>2; if(a[m]==x) return m; else if(a[m]>x) r = m-1; else l = m+1; } return -1; //查找不成功}
二分查找求下界(第1次出现的位置) lower_bound
int bsearchLower(int a[],int l,int r,int x){ int m; while(l<r){ m = (l+r)/2; if(x<=a[m]) r = m; else l = m+1; } if(a[l]==x) return l; else return -1; //查找不成功}
二分查找求上界(最后一次出现的位置)upper_bound
int bsearchUpper(int a[],int l,int r,int x){ int m; while(l<r){ m = (l+r+1)/2; //加了“1” if(x<a[m]) r = m-1; else l = m; } if(a[r]==x) return r; else return -1;//查找不成功}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。