package TestErfenCha;
public class TestErfenCha {
public static void search(int shu, int[] arr){
int len = arr.length-1;
int min = 0, max = len, mid = (max-min)/2;
int count = 2;
while(shu!=arr[mid]){

if(shu<arr[mid]){
min = min;
max = mid-1;
mid = min+(max-min)/2;
System.out.println("第"+count+"次的最小值是:"+arr[min]);
System.out.println("第"+count+"次的中间是:"+arr[mid]);
System.out.println("第"+count+"次的最大值是:"+arr[max]);
}
else if(shu>arr[mid]){
min = mid+1;
max = max;
mid = min+(max-min)/2;
System.out.println("第"+count+"次的最小值是:"+arr[min]);
System.out.println("第"+count+"次的中间是:"+arr[mid]);
System.out.println("第"+count+"次的最大值是:"+arr[max]);
}

if(shu==arr[mid]){
System.out.println("恭喜你找到元素");
break;

}
count++;

}
}



public static void main(String[] args){
int arr[] = new int[15];
for(int i=0;i<15;i++){
arr[i] = i+3;
System.out.print(arr[i]+" ");
}
System.out.println();
search(8,arr);
}
}
在机子上调试过了,成功;有兴趣的朋友尝试导入;欢迎有其他方法的朋友分享代码;

解决方案 »

  1.   

    C:\Documents and Settings\Administrator\桌面
      

  2.   


    这位楼上的朋友问得好;刚在csdn新闻网页上看到这个题目,自己就临时动手做了一下;所以有些问题没有考虑清楚;我刚才用不存在的数试了一下,抛出异常;不是死循环,因为即使都找不到,所有的数都会计算到最后,只是找不到而已;谢谢楼上的朋友,替我拓宽了思维,再改进一下;
      

  3.   

    o  好像是找不到的话会导致数组下标越界  呵呵
    写的不错
    算法是程序的根本
    虽然Java不怎么在乎算法
    但也是很有学习的必要的  呵呵  加油