二分(折半查找)—二分算法在查找的应用
缺点:有序,查找数靠前
/*
查找
*/
import java.util.Arrays;
class ArraySearchDemo{
public static void main(String[] args) {
//给定数组
//int[] arr ={4,7,2,1,8,9,1};//无序
int[] arr ={1,2,4,5,6,7,9};//有序
//给定查找数
int num = 3;
/*//通过普通for循环依次遍历数组元素进行查找
for(int i=0;i<arr.length;i++){
if(arr[i]==num){
System.out.println(i);
}
}*/
/*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(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(max>=min)
System.out.println(mid);
}
}