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);
}
}
[img=C:\Documents and Settings\Administrator\桌面][/img]
在机子上调试过了,成功;有兴趣的朋友尝试导入;欢迎有其他方法的朋友分享代码;
6 个解决方案
#2
结果图片插不进去,只能用复制了,结果如下;
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
第2次的最小值是:3
第2次的中间是:6
第2次的最大值是:9
第3次的最小值是:7
第3次的中间是:8
第3次的最大值是:9
恭喜你找到元素
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
第2次的最小值是:3
第2次的中间是:6
第2次的最大值是:9
第3次的最小值是:7
第3次的中间是:8
第3次的最大值是:9
恭喜你找到元素
#3
先祝贺下楼主
楼主的代码如果找一个本就不存在于数组中的数会不会死循环了
楼主的代码如果找一个本就不存在于数组中的数会不会死循环了
#4
这位楼上的朋友问得好;刚在csdn新闻网页上看到这个题目,自己就临时动手做了一下;所以有些问题没有考虑清楚;
我刚才用不存在的数试了一下,抛出异常;不是死循环,因为即使都找不到,所有的数都会计算到最后,只是找不到而已;
谢谢楼上的朋友,替我拓宽了思维,再改进一下;
#5
o 好像是找不到的话会导致数组下标越界 呵呵
写的不错
算法是程序的根本
虽然Java不怎么在乎算法
但也是很有学习的必要的 呵呵 加油
写的不错
算法是程序的根本
虽然Java不怎么在乎算法
但也是很有学习的必要的 呵呵 加油
#6
是的,不存在的数字因为穷尽了所有数字都找不到,然后数字有加减,导致下标越界;用存在的数字实验是正确的;
不过,仍然要谢谢这位仁兄帮忙提意见;你的慧眼让我看清了修改的方向,再次谢谢;
#1
#2
结果图片插不进去,只能用复制了,结果如下;
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
第2次的最小值是:3
第2次的中间是:6
第2次的最大值是:9
第3次的最小值是:7
第3次的中间是:8
第3次的最大值是:9
恭喜你找到元素
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
第2次的最小值是:3
第2次的中间是:6
第2次的最大值是:9
第3次的最小值是:7
第3次的中间是:8
第3次的最大值是:9
恭喜你找到元素
#3
先祝贺下楼主
楼主的代码如果找一个本就不存在于数组中的数会不会死循环了
楼主的代码如果找一个本就不存在于数组中的数会不会死循环了
#4
这位楼上的朋友问得好;刚在csdn新闻网页上看到这个题目,自己就临时动手做了一下;所以有些问题没有考虑清楚;
我刚才用不存在的数试了一下,抛出异常;不是死循环,因为即使都找不到,所有的数都会计算到最后,只是找不到而已;
谢谢楼上的朋友,替我拓宽了思维,再改进一下;
#5
o 好像是找不到的话会导致数组下标越界 呵呵
写的不错
算法是程序的根本
虽然Java不怎么在乎算法
但也是很有学习的必要的 呵呵 加油
写的不错
算法是程序的根本
虽然Java不怎么在乎算法
但也是很有学习的必要的 呵呵 加油
#6
是的,不存在的数字因为穷尽了所有数字都找不到,然后数字有加减,导致下标越界;用存在的数字实验是正确的;
不过,仍然要谢谢这位仁兄帮忙提意见;你的慧眼让我看清了修改的方向,再次谢谢;