public static void main(String[] args) {
// 折半查找(二分查找法)
/*--先从数组中间开始找,如果查找的数>中间值,则在后面找;如果查找的数<中间值,则在前面面找
--如果第一次找不到,则二分从后面(前面)的中间继续找,直到起始位置>结束位置就退出循环
*/
@SuppressWarnings("resource")
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入你要查找的数据");
int shuju = myScanner.nextInt();
int[] arr = {1,5,43,45,64,65,99,101,978};
// 定义查询起始位置和结束位置
int start = 0;int end = arr.length;
//定义中间位置的索引
int mid;
//使用循环来二分查找,如果有找到则输出位置,如果找不到则输出-1
while(start<=end) {//当查询的起始位置小于等于结束位置
//进行查找
//1.进行二分之一
mid = (start+end)/2;
//2.比较key和中间值
if (arr[mid] == shuju) {//中间值==shuju
System.out.println("shuju所在的数组索引为:"+mid);
//结束方法
return;
}else if (arr[mid] > shuju) {//中间值比shuju大,把范围往后,把开始位置修改
end = mid-1;
}else {//中间值比shuju小,把范围往后,把开始位置修改
start = mid + 1;
}
}
//如果while循环中没有找到
System.out.println("没有找到,返回-1");
}
Java二分查找法(折半查找)
最新推荐文章于 2023-08-14 23:02:22 发布