黑马程序员技术交流社区

标题: java折半查找法 [打印本页]

作者: ToGame    时间: 2015-9-19 10:35
标题: java折半查找法
需求:折半查找则是去有序数组中间的那个数与要查找的数字进行比较,如果是则找到
          如果不是则根据数组的排列顺序,最大索引=中间索引-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,程序运行顺利,(*^__^*) 嘻嘻……
作者: 水果牛牛    时间: 2015-9-19 11:58
我觉得还要加上一句,就是如果没找到的话应该输出个东西告诉调用者。
作者: 裘-样    时间: 2015-9-19 13:03
楼上说的有道理!
作者: zx0210    时间: 2015-9-19 14:19
一般没找到就return -1,写这个代码只是为了应付面试,以后一个方法就搞定Arrays.binarySearch(a);
作者: 一个人的朝圣    时间: 2015-9-19 17:23
感觉还不错 多谢分享 !




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