二分查找算法
要点:定义3个变量来标识元素的查找范围,通过让目标值和每次查找范围的中间值来做比较,不断缩小查找范围,从而避免全部遍历来查找目标元素.
示例代码:
/*
二分查找算法
*/
class Demo9
{
public static void main(String[] args)
{
int[] arr = {1,23,12,-9,15,31};
int a = 30;
int index = halfSearch(arr,a);
if (index != -1)
{
System.out.println(a+"的索引是:"+index);
}
else
{
System.out.println("不好意思,没找到!");
}
}
public static int halfSearch(int[] arr, int target)
{
int min = 0;
int mid = arr.length/2;
int max = arr.length;
while(true)
{
if (target > arr[mid])
{
min = mid + 1;
}
else if (target < arr[mid])
{
max = mid - 1;
}
else
{
return mid;
}
if(max < min)
{
return -1;
}
mid = (min+max)/2;
}
}
}