二分法查找的实现【java实现二分法查找】
1、理清思路:首先得明确最简单的基础,就是如何实现二分法查找,很简单的想到的是取中间值,比较要查找的值,查找对象。我们可以先创建一个类,进行简单的处理。如下图:class find{public int Dicfind(int min,int max,int a[],int value){ return value;}}

3、现在就是思考的难点来了,如何分析并继续下一步查找问题,例如给你一组数据a[]={1,2,4,5,6};查找的值为2,第一次查找mid=2;a[2]>2;那么如何进行下一步查找呢,这里我们使用递归调用,这就是为什么我们要设置方法返回类型为int的原因(实现递归)。代码如下:class find{ public int Dicfind(int min,int max,int a[],int value){ int mid=(min+max)/2; int i=0; //比较a[mid]和value if(a[mid]>value){ return Dicfind(min,mid-1,a,value); } return value; } }

5、然后在main方法中测试一下,具体代码如下,为了方便调用我们把方法写出静态的,方便使用。执行看到效果(下图所示)!具体代码如下:package de罪焐芡拂mo2;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int[] a={1,2,3,4,5}; find.Dicfind(0, a.length-1, a, 2); }}class find{ public static int Dicfind(int min,int max,int a[],int value){ int mid=(min+max)/2; //比较a[mid]和value if(a[mid]>value){ return Dicfind(min,mid-1,a,value); } if(a[mid]<value){ return Dicfind(mid+1,max,a,value); } if(a[mid]==value){ System.out.println("查到这个数了:是第"+(mid+1)+"数"); } return -2; } }
