二分查找
1.定义3个下标
lo=0
hi=a.length-1
mid先复制
2.当lo<=hi
3.计算中间位置mid=(lo+hi)/2
4.比较中间位置mid的值>t,hi定位到mid-1
5.如果mid的值
7.找不到数据,返回特殊值-1
import java.util.Arrays;
public class ErFen {
public static void main(String[] args) {
int []a={11, 46, 56, 56, 94};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int t=46;
//二分查找
int index=binarySearch(a,t);
if(index!=-1)
System.out.println(index);
else
System.out.println("没找到");
}
private static int binarySearch(int[] a, int t) {
/*
* 46
*
* 中间mid=(lo+hi)/2
* [11, 46, 56, 56, 94]
* lo
* hi
* mid
*
* lo
* mid
* hi
*
* 1.定义3个下标
* lo=0
* hi=a.length-1
* mid先复制
* 2.当lo<=hi
* 3.计算中间位置mid=(lo+hi)/2
* 4.比较中间位置mid的值>t,hi定位到mid-1
* 5.如果mid的值t)//中间位置大
{
hi=mid-1;
}
else if(a[mid]
运行结果
[11, 46, 56, 56, 94]
1