package day04;
public class ArrsyFindDemo4 {
public static void main(String[] args){
// 0 1 2 3 4 5 6 7 8 9 10
int[] arr ={2,5,7,8,10,15,18,20,22,25,28}; // 数组是有序的
int value = 18;
// 顺序查找 最多查找 n-1
// 二分查找 最多查找 n/2 大大的降低了执行的时间 效率提升了
int index =-1; // 用来接受查找的 value值对应的索引 index = 6
int left = 0;
int right =arr.length-1;
int mid =(right + left)/2; // 中间位置的索引
// System.out.println(mid);
// 不存在左边 大于 右边的范围
while (left <= right){
System.out.println("范围是:" + left + "-->" +right);
System.out.println("mid是:" +mid);
// 跟中间值 进行比较 找到之后直接结束
if(arr[mid] == value){
index= mid;
break;
}else if (arr[mid] > value){
// value 大于中间值 则查找右边
left = mid +1;
}else{
right = mid - 1;
}
// mid 根据 左右两边的范围进行 变化
mid = (right + left)/2;
}
// 打印结果数据
if (index == -1){
System.out.println("你查找的数据不存在");
}else{
System.out.println(value + "在数组中的索引是: " + index);
}
}
}
顺序查找
最新推荐文章于 2024-06-14 15:02:13 发布