二分查找

在单调递增序列a中查找>=x的数中最小的一个(即x或x的后继)
while(l<r) { 
    int mid=(l+r)/2; 
	if(a[mid]>=x) 
	    r=mid; 
	else l=mid+1;
	}
return a[l];

在单调递增序列a中查找<=x的数中最大的一个(即x或x的前驱)
while(l<r) { 
    int mid=(l+r+1)/2; 
	if(a[mid]<=x)
	    l=mid; 
	else r=mid-1;
	}
return a[l];
posted @ 2022-11-19 20:23  风归去  阅读(19)  评论(0编辑  收藏  举报