二分查找的关键在于: 通过起始位置标记中心位置
二分查找的数组必须是有序的。
public class BinarySearchDemo {
public static void main(String[] args) {
int[] arr = {0, 2, 4, 5, 7, 8, 11, 33, 66};
bsearch(arr, 2);
}
public static void bsearch(int arr[], int target) {
//初始化起始位置,声明中间位置
int start = 0;
int end = arr.length - 1;
//此变量要带到循环中,即时改变
int middle;
//由于不知道具体循环的次数,采用while循环,结束条件为开始位置比结束位置还要大
while (start <= end) {
middle = (end - start) / 2;
//如果在中间位置左边,开始位置不变,结束位置为middle-1,反之,结束位置不变,开始位置为midd+1
if (target < arr[middle]) {
end = middle - 1;
} else if (target > arr[middle]) {
start = middle + 1;
} else {
System.out.println("您要查找的元素在" + middle + "处");
break;
}
}
}
}
//结果
您要查找的元素在1处
网友评论