public class ErFenFaTest ... { public static void main(String[] args) ...{ int a[]=...{1,3,6,8,9,10,12,18,20,34}; int i=3; System.out.println("所在位置:"+binarySearch(a, i)); System.out.println("查找次数:"+count); } static int count = 0; //查找次数 public static int binarySearch(int[] a,int num) ...{ if(a.length==0) return -1; int startPos=0; //开始位置 int endPos=a.length-1;//结束位置 int m=(startPos+endPos)/2;//中间位置 while(startPos<=endPos)//如果开始小于结束 ...{ count++; System.out.println("比较值:"+a[m]); if(num==a[m]) return m;//如果等于num,返回m,也就是这个数在数组中的位置 if(num>a[m])//如果在右边 ...{ startPos=m+1;//重新设置开始位置 } if(num<a[m])//如果这个数在左边 ...{ endPos=m-1;//重新设置结束位置 } m=(startPos+endPos)/2; } return -1; }} 运行结果如下: 比较值:9比较值:3所在位置:1查找次数:2