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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ToGame 中级黑马   /  2015-9-19 10:35  /  556 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求:折半查找则是去有序数组中间的那个数与要查找的数字进行比较,如果是则找到
          如果不是则根据数组的排列顺序,最大索引=中间索引-1,最小索引=中间索引+1
          由此反复知道找到为止!

代码如下:
int number=sc.nextInt();
int count=a.length;
for(int i=0,max=count,moi=count/2,min=0;max>min;moi=(max+min)/2)
{
        if(a[moi]==number)
        {
                System.out.println("yes--"+moi);
                break;
        }
        if(a[moi]>number)
        {
                min=moi+1;
        }
        if(a[moi]<number)
        {
                max=moi-1;
        }
}

OK,程序运行顺利,(*^__^*) 嘻嘻……

4 个回复

倒序浏览
我觉得还要加上一句,就是如果没找到的话应该输出个东西告诉调用者。
回复 使用道具 举报
楼上说的有道理!
回复 使用道具 举报
一般没找到就return -1,写这个代码只是为了应付面试,以后一个方法就搞定Arrays.binarySearch(a);
回复 使用道具 举报
感觉还不错 多谢分享 !
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马