publicclassBinarySearch{publicstaticvoidmain(String[] args){int[] a =rnd();//创建随机数组
Arrays.sort(a);//给数组排序
System.out.println(Arrays.toString(a));
System.out.print("请输入查找的目标值:");int t =newScanner(System.in).nextInt();//二分查找int index =binarySearch(a, t);if(index <0){
System.out.println("找不到目标值");}else{
System.out.println(t+"所在的下标位置:"+index);}}//二分查找 参数: 查找的数组、查找的元素privatestaticintbinarySearch(int[] a,int t){int lo =0;int hi = a.length-1;int mid;while(lo <= hi){
mid =(lo+hi)/2;if(a[mid]< t){
lo = mid+1;}elseif(a[mid]> t){
hi = mid-1;}else{return mid;}}return-(lo+1);//如果是要插入数据,lo+1就是要插入的位置 此处用作查找,所以用-(lo+1)转换为负数标识}//生成一个随机数组staticint[]rnd(){int[] a =newint[5+newRandom().nextInt(6)];for(int i =0; i < a.length; i++){
a[i]=newRandom().nextInt(100);}return a;}}