黑马程序员技术交流社区

标题: 关于二分查找 [打印本页]

作者: gaojing69485542    时间: 2015-11-2 23:25
标题: 关于二分查找
二分查找代码怎么写呀 一点思路没有

作者: 石三伢子1    时间: 2015-11-3 18:44
1,先不用考虑循环的问题,
先确定第一次找查找的min,max,和mid的值;
2,第二次,根据key<,>,=mid的结果,
计算第二次min,max,mid的值的位置;
3,分析,头两次间的规律,建立循环,内部用if(){}else{}块进行流程控制;
4,设置循环结束条件,就是当max<=min是循环查找结束;
奉上自己写的代码,自己测试没问题;
public class HelloWorld {
    public static void main(String []args) {
                int[] arr = {1,2,3,4,6,7,8,9};
                System.out.println(erFen(arr,10));
    }
       
        public static int erFen(int[] arr,int key){
                int min,max,mid;
                min=0;
                max=arr.length-1;
        while(max>min){
                        mid = min+max;
                        if(key==arr[mid]){
                                return mid;
                        }
                else if (key<arr[mid]){
                                max=mid-1;
                        }
                        else{
                         min=mid+1;
                        }
                }
                return -min;
        }
}

作者: ash午夜阳光    时间: 2015-11-3 21:51
石三伢子1 发表于 2015-11-3 18:44
1,先不用考虑循环的问题,
先确定第一次找查找的min,max,和mid的值;
2,第二次,根据key,=mid的结果,

while里面第一句有问题发现没?
作者: 石三伢子1    时间: 2015-11-4 09:56
呵呵,谢谢前辈;更正一下,mid = (min+max)/2;
作者: ppaapc    时间: 2015-11-4 21:01
流程想清楚  代码自然就有了
作者: 我若为神    时间: 2015-11-4 21:40
老师都没讲过啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2