思想:找中间的数,变换左右边界值
编程要点:设置 l<=r 作为作为循环判断标志
import java.util.*;
/**
* 二分查找
*/
public class Main {
public static void main(String[] args) {
int[] arr = new int[]{1, 4, 7, 9, 12, 15, 17, 25, 33};
int target = 1;
System.out.println(bsearch( arr, target));
}
private boolean bsearch(int[] arr, int target) {
int l = 0;
int r = arr.length - 1;
int m = 0;
boolean found = false;
while (l <= r) {
m = (l + r) / 2;
if (arr[m] == target) {
System.out.println(m);
return found = true;
}
if (arr[m] > target) {
r = m - 1;
} else {
l = m + 1;
}
}
return false;
}
}
时间复杂度:O(logn)读big O 括号logn (: