二分法查找:也称折半查找,前台数组必须有序
/**
* 二分法查找 :前提必须有序
*/
@Test
public void arrayBinarySearch(){
int [] array1=new int[]{-40,10,20,30,40,50,60,70,80,90};
int dest=100;
int head=0;//初始索引
int end=array1.length-1;//初始索引的末尾
Boolean bool=false;
while (head<=end){
/**二分法又称折半查找法,从中间查找 所以 / 2*/
int middle=(head+end)/2;
if (dest==array1[middle]){//如果找到
bool=true;
System.out.println("找到了 索引位置为"+middle);
break;
}else if (array1[middle]<dest){//如果数组下标的值 小于 40
/**,比如 */
/**数组是从小到大有序
* middle=4; middle数组下标
* array1[middle]=40,dest=60
* 条件就是 40< 60
* 初始索引 middle+1
* head=4+1;
* 进行下一次循环 middle=(head+end)/2
* middle=(5+9)
* middle=7
*/
head=middle+1;
}else {
end=middle-1;
}
}
if (!bool){
System.out.println("没有找到");
}
}