public class Main {
public static void main(String[] args) {
// 排好序的数组,没有重复元素
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 78, 788, 878, 1000 };
//声明中间值
int middle = 0;
//声明开始值
int start = 0;
//查找的值为3,在该数组中查找值为3的元素
int value = 3;
//声明结束值
int end = nums.length;
// 用for循环是知道循环的次数,此处用while是因为不知道能循环多少次,且算法中开始值只能小于结束值
while (start < end) {
// 每次循环重新定义中间值
middle = (start + end) / 2;
//当中间元素等于查找的元素,输出中间元素的索引,返回
if (value == nums[middle]) {
System.out.println("该数所在数组索引为" + middle);
return;
} else if (value > nums[middle]) {
//如果中间元素小于查找值,开始值加一
start = middle + 1;
} else if (value < nums[middle]) {
//若果中间元素大于查找值,结束值减一
end = middle - 1;
}
}
//在上述的循环中没有找到值,则证明不存在
System.out.println("没该数");
}
}