二分法适用于有序的场景
1、非递归实现
private static int search(int[] data,int target) {
if(data.length < 1){
return -1;
}
int l = 0;
int r = data.lenth -1;
while(l <= r) {
int mid = (l + r) / 2;
if(data[mid] == target) {
return mid;
} else if(data[mid] < target) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return -1;
}
2、递归实现
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);
}
}
博客介绍二分法适用于有序场景,主要阐述了二分法的两种实现方式,分别是非递归实现和递归实现。
620

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



