二分搜索问题,二分查找和二分搜索
int left=-1,right=length-1;
而(左1!=右){//左右左=右
int middle=(左右)/2;
if(a[middle] n){ //a[left] n
左=中;
}else{ //a[right]=n
右=中;
if(right=length a[right]!=n)//没有找到
return-1;
向右返回;
//测试无发现
if(BSearch(t,NUM,t[0] - 1)!=-1 BSearch(t,NUM,t[NUM-1] 1)!=-1){
结果=假;
返回结果;
*测试功能
bool TestBetterBSearch(){
常量整数=20
int BeginNum=10
int t[NUM];
for(int I=0;i NUMi){
t[I]=开始编号;
开始
布尔结果=真
for(int j=0;j NUMj){
if(BetterBSearch(t,NUM,t[j])!=j){
结果=假;
//测试无发现
if(BetterBSearch(t,NUM,t[0] - 1)!=-1 BetterBSearch(t,NUM,t[NUM-1] 1)!=-1){
结果=假;
返回结果;
int main(int argc,char* argv[])
常量整数=10;
int t[NUM]={10,11,12,13,14,15,16,17,18,20 };
PrintfNum(t,NUM);
for(int I=0;i NUMi){
cout t[i]位于索引处:" BSearch(t,NUM,t[I])endl;
cout 在数组t中搜索100,结果: BSearch(t,NUM,100)endl;
cout结束
cout BSearch测试结果: TestBSearch()endl;
cout BetterBSearch测试结果: TestBetterBSearch()endl;
返回0;
模板类T
void PrintfNum(T a[],const int n){
for(int I=0;i i){
cout a[i],;
cout结束
http://www.waitingfy.com/?p=464