public static void main(String[] args) {
//目标数组
int[] arr = new int[] {1,2,3,4,5,6,7,8,9};
//目标元素
int target=9;
//目标元素的索引
int index = -1;
//记录开始位置
int begin=0;
//记录结束位置
int end = arr.length;
//记录中间位置
int mid = (begin+end)/2;
//循环查找
while(true) {
//如果起始位置和结束位置重合,说明目标元素在目标数组中不存在
if(begin>=end) {
throw new RuntimeCryptoException();
}
//判断中间这个元素是不是要查找的元素
if(arr[mid]==target) {
index=mid;
//如果是,直接退出
break;
}else {
//判断中间元素比目标元素大
if(arr[mid]>target) {
//把结束位置调整到中间位置的前一个位置
end=mid-1;
//判断中间元素比目标元素小
}else {
//把起始位置调整到中间位置的后一个位置
begin=mid+1;
}
//取出新的中间位置
mid=(begin+end)/2;
}
}
System.out.println(index);
}
这段代码展示了二分查找法的实现。定义了目标数组和目标元素,通过不断更新起始、结束和中间位置,在循环中判断中间元素与目标元素的大小关系,调整查找范围,最终找到目标元素的索引或抛出异常。
1301

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



