二分查找的代码(非递归的方式实现)
public class Demo1 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6};
int index = binarySearch(arr, 3);
System.out.println(index);
}
public static int binarySearch(int[] arr, int value) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] > value) {
right = mid - 1;
} else if (arr[mid] < value) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
需要注意的地方
while循环中 mid = left + (right - left) / 2;这个语句,这边不使用mid=(left+right)/2 是因为left+right的值可能会溢出(超出int类型的取值范围)
Java中int类型的取值范围为 -2^31 到 2^31-1
4267

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



