A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gaojing69485542 中级黑马   /  2015-11-2 23:25  /  658 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

二分查找代码怎么写呀 一点思路没有

5 个回复

倒序浏览
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;
        }
}
回复 使用道具 举报
石三伢子1 发表于 2015-11-3 18:44
1,先不用考虑循环的问题,
先确定第一次找查找的min,max,和mid的值;
2,第二次,根据key,=mid的结果,

while里面第一句有问题发现没?
回复 使用道具 举报
呵呵,谢谢前辈;更正一下,mid = (min+max)/2;
回复 使用道具 举报
流程想清楚  代码自然就有了
回复 使用道具 举报
老师都没讲过啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马