Java折半查找 二分法
小白收藏😁😁😁
import java.util.Scanner;
public class 折半查找元素法 {
public static void main(String args[])
{
System.out.println("请输入您需要查找的数字:");
Scanner count=new Scanner(System.in);
int FIND_COUNT=count.nextInt();
int[] List={1,3,4,6,8,43,56,78,89,90,123};
int LOCATION= FindMath(List,FIND_COUNT);
if(LOCATION!=-1)
{
System.out.println("找到该数字,下标为"+LOCATION);
}
else {
System.out.println("未找到该数字");
}
}
private static int FindMath(int[] List, int FIND_COUNT) {
int begin_COUNT=0;//设置起始下标
int Midlle_Count,flag=-1;//初始化
int end_COUNT=List.length-1;//设置末下标
while (begin_COUNT<=end_COUNT) {
//当初下标小于等于末下标时执行下方的代码
Midlle_Count=(end_COUNT+begin_COUNT)/2;
//给middle赋值
if(FIND_COUNT==List[Midlle_Count])
{
//判断是否相等 相等的话将数字下标赋值给flag
flag=Midlle_Count;
break;
}
else if(FIND_COUNT<List[Midlle_Count]){
//如果输入的数字小于中间的数 将末坐标赋值成中间前一个元素
end_COUNT=Midlle_Count-1;
flag=-1;
}else if(FIND_COUNT>List[Midlle_Count])
{
//如果输入的数字大于中间的数 将初始坐标赋值成中间后一个元素
begin_COUNT=Midlle_Count+1;
flag=-1;
}
}
if(flag!=-1)
//判断是否取到坐标
{
return flag;
}
else {
return -1;
}
}
}