public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8,9,10};
System.out.println("查找总次数:"+ halfFind(arr, 12));
System.out.println("查找总次数:"+ halfFind(arr, 10));
System.out.println("查找总次数:"+ halfFind(arr, 5));
System.out.println("查找总次数:"+ halfFind(arr, 3));
}
static int halfFind(int[] arr, int target)
{
int max = arr.length - 1; //最大数组下标
int min = 0; //最小数组下标
boolean flag = false; //标志是否查找到
int counte = 0; //计数器
while(max >= min) //移动最大最小下标,直到最大下标与最小下标相遇
{
int mid = (max+min)/2; //数组中间下标,会根据二分法判断出的位置改变
//如果目标值大于二分法的中间值,说明在数组右边,min就从mid的位置开始
if(target > arr[mid])
{
min = mid + 1; //第一次:mid==4, 已经知道mid不等于target了,所以以mid+1作为最小下标
}
//否则就是在数组左边,就移动max的位置
else if(target < arr[mid])
{
max = mid - 1; //max和min同理
}
else if(target == arr[mid])
{
System.out.println("查找到对应target:"+arr[mid]);
flag = true;
break;
}
System.out.println(arr[mid]);
counte++;
}
//如果没有查找到数据
if(!flag)
{
System.out.println("没有查找到对应数据");
}
return counte;
}
二分查找--Java(注释详细)
最新推荐文章于 2024-04-10 08:59:58 发布
2311

被折叠的 条评论
为什么被折叠?



