fullstack-tutorial
fullstack-tutorial copied to clipboard
关于数据结构-二叉树-二分查找代码的问题
针对文中代码修改如下,见注释处
private static int search(int[] data,int l,int r,int target){
int mid;
//注意:此处循环条件为<=,若无=则无法查找数组起始处数据
while(l<=r){
mid=(l+r)/2;
if(data[mid]==target){
return mid;
}else if(data[mid]<target){
l=mid+1;
}else{
r=mid;
}
}
return -1;
}
private static int searchDfs(int[] data,int l,int r,int target){
//注意:此处循环条件为>,若有=则无法查找数组起始处数据
if(l>r){
return -1;
}
int mid=(l+r)/2;
if(target==data[mid]){
return mid;
}else if(target>data[mid]){
return searchDfs(data,mid+1,r,target);
}else{
return searchDfs(data,l,mid,target);
}
}