第一种用递归实现(效率低,但是容易理解):
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;
}

本文详细介绍了二分查找算法的两种实现方式:递归实现与非递归实现,并对比了两者的执行效率。递归实现虽然易于理解但效率较低;而非递归实现效率更高,更适合实际应用。
1117

被折叠的 条评论
为什么被折叠?



