二分查找的三种实现

原创 2015年11月21日 02:14:08
int lower_bound(int* A, int x, int y, int v){//二分查找求下界 (相同多个的最前面一个) 
	int m;
	while(x < y) {
		m = x+(y-x)/2;
		if(A[m]>=v) y = m;
		else x = m+1;
	}
	return x;
} //尽管查找区间是左闭右开期间[x,y),返回值的候选区却是闭区间[x, y]; 
//当v不存在时, 返回的是第一个比v大的值下标。
int upper_bound(int* A, int x, int y, int v){//二分查找求上界 (相同多个的最后面一个) 
	int m;
	while(x < y) {
		m = x+(y-x)/2;
		if(A[m]<=v) x = m+1;
		else y = m;
	}
	return x;
} 
//当v存在时,返回它出现的最后一个位置的后面一个位置。若v不存在则返回一个插入的下标 

int bsearch(int* A, int x, int y, int v){  //二分查找是否存在v值 
	int m;
	while(x<y){
		m = x+(y-x)/2;
		if(A[m]==v) return m;
		else if(A[m]>v) y = m;
		else x = m+1;
	}
	return -1
} 
x+(y-x)/2   和  (y+x)/2   的结果是一模一样的!!!!

经典案例,二分查找的三种实现方式

* (1)start=0,end=7,middle=(start+end)/2=3 * array[3]=5,7>5 * 所以数据在右侧,start=middle+1=3+1=4 ...

二分查找突破上下限,树状数组的三种应用。

result=lower_bound(nums.begin(),nums.end(),new_val); result=upper_bound(nums.begin(),nums.

二分查找--java实现

  • 2015年10月26日 19:19
  • 2KB
  • 下载

二分查找的实现

  • 2013年07月03日 16:09
  • 2.25MB
  • 下载

二分查找算法实现《算法(第四版)》

最近开始看《算法(第4版)》这本书,在此记录下自己的学习心得、遇到的问题以及如何解决的。希望能够提升自己帮助他人。         刚开始看这本书遇到的第一个比较有代表性的算法就是二分查找,运用《算...

C++ 二分查找的实现

  • 2010年03月15日 22:48
  • 837B
  • 下载

java实现二分查找

  • 2015年08月17日 14:08
  • 856B
  • 下载

基于数组二分查找算法的实现

基于数组二分查找算法的实现 二分查找 查找 算法 赵振江 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法...
  • C_Major
  • C_Major
  • 2015年04月26日 09:39
  • 2414

WinDlx实现二分查找算法

  • 2011年08月05日 11:47
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找的三种实现
举报原因:
原因补充:

(最多只允许输入30个字)