第一种用递归实现(效率低,但是容易理解):
int binSearch(const int *Array,int start,int end,int key){
int left,right;
int mid;
left=start;
right=end;
while (left<=right) {
//注释中为递归算法,执行效率低,不推荐
mid=(left+right)/2;
if (key<Array[mid]) {
return(binSearch(Array,left,mid-1,key));
}else if(key>Array[mid]){
return (binSearch(Array,mid+1,right,key));
}else
return mid;
}
return -1;
}
第二种非递归算法 效率高:
int binSearch(const int *Array,int start,int end,int key){
int left,right;
int mid;
left=start;
right=end;
while (left<=right) {
mid=(left+right)/2;
if (key<Array[mid]) {
right=mid-1;
}else if(key>Array[mid]){
left=mid+1;
}else
return mid;
}
return -1;
}