一、代码
1.1、递归算法
int Binary_Search_DiGui(const * a, const int left,const int right,const int x){
if(left<right){
int middle = (left + right)/2;
if(a[middle]>x){
return Binary_Search_DiGui(a,left,middle-1,x);
}else if(a[middle]<x){
return Binary_Search_DiGui(a,middle+1,right,x);
}else{
return middle;
}
}
return -1;
}
2.2、迭代算法
即前面的While循环算法
int Binary_Search_DieDai(const * a,const int n,const int x){
int left = 0;
int right = n-1;
while(left<right){
int middle = (left + right)/2;
if(a[middle]>x){
right = middle - 1;
}else if(a[middle]<x){
left = middle +1;
}else{
return middle;
}
}
return -1;
}