二分(折半)查找—二分算法在查找中的应用
注意:给定的数组必须是有序的。
/*
二分查找
*/
class demo{
public static void main(String[] args) {
//给定数组
//int[] arr={4,2,7,1,8,9};//无序
int[] arr = {1,2,4,5,7,8,9};//有序 任意连续区域都是有序的
//给定查找数
int num=3;
/*//通过普通for循环依次遍历数组元素进行查找
for(int i=0;i<arr.length;i++){
//判断比较
if(num==arr[i]){
System.out.println(i);
break;
}
}*/
/*int count=0;
for(int i:arr){
if(i==num){
System.out.println(count);
break;
}
count++;
}*/
//二分(折半)查找---二分算法在查找中的应用
//定义三个下标用变量表示
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
//循环--while
while (num!=arr[mid]) {
// 中间下标对应的元素值不相等才进行循环操作
//如果查找数大于中间下标元素的值
if(num>arr[mid]){
//把最小下标往右挪动
min = mid+1;
}
//如果查找数小于中间下标元素的值
if(num<arr[mid]){
//把最大下标往左挪动
max = mid-1;
}
//查找数不存在的情况
if(min>max){
System.out.println("查无此数");
break;
}
//重新计算中间下标
mid=(min+max)/2;
}
//
if(min<=max)
System.out.println(mid);
}
}