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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田爽 初级黑马   /  2013-4-16 16:29  /  1734 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田爽 于 2013-4-16 18:46 编辑

public static int zheban(int[] shuzu,int shu)
        {
                int xiao=0,da=shuzu.length-1,zhong=(xiao+da)/2;
                        while(shu!=shuzu[zhong])
                        {
                                if (shu>shuzu[zhong])
                                        xiao=zhong+1;
                                else if (shu<shuzu[zhong])
                                        da=zhong-1;
                                zhong=(xiao+da)/2;
                                if(xiao>da)
                                        return -1;
                        }
                return zhong;

183.java:47: 错误: 可能尚未初始化变量zhong
                int xiao=0,da=shuzu.length,zhong=(xiao+zhong)/2;
                                                       ^
1 个错误

为什么不能初始化变量zhong。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

14 个回复

倒序浏览
帅哥,这样吧,我把我的好的代码给你,思路都差不多.你跟着看下,
  1. public static int binarySeach(int num,int[] arr){
  2.                 int min=0,max=arr.length,mid=(min+max)/2;
  3.                 while(min<max){
  4.                         mid=(min+max)/2;
  5.                         if(num<arr[mid]){
  6.                                 max=mid-1;
  7.                         } else if(num>arr[mid]){
  8.                                 min=mid+1;
  9.                         } else return mid;
  10.                 }
  11.                 return -1;
  12.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
错了  是这段代码public static int zheban2(int[] shuzu,int shu)
        {
                int xiao=0,da=shuzu.length,zhong=(xiao+zhong)/2;
                while (zhong<=da)
                {
                        if(shuzu[shu]>zhong)
                                xiao=zhong+1;
                        else if(shuzu[shu]<zhong)
                                da=zhong-1;
                        else return zhong;
                }
                return -1;
        }

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
  1. if(shuzu[shu]<zhong)//你是给了一个角标,还是一个数值呢?你的zhong是一个角标,你取了一个数值与角标比较?
  2. 而且你的代码好难看.老师用的min/max/min不是挺好的吗?如果你要这样的话,还不如直接定义中文变量
复制代码
回复 使用道具 举报
陈圳 发表于 2013-4-16 16:33

还是不行。。183.java:47: 错误: 可能尚未初始化变量zhong
                int xiao=0,da=shuzu.length,zhong=(xiao+zhong)/2;
                                                       ^
1 个错误

回复 使用道具 举报
田爽 发表于 2013-4-16 16:38
还是不行。。183.java:47: 错误: 可能尚未初始化变量zhong
                int xiao=0,da=shuzu.length, ...

int xiao=0,da=shuzu.length,zhong=(xiao+zhong)/2;
你真是有才的人.zhong=(xiao+zhong)/2;
你看着有出错的提示自己找一下,也该找到答案了呀.zhong你刚刚定义,怎么能参与运算呢?
你最应该做不是问别人为什么出错,你应该重新看一遍老师的视频,然后把老师写的代码敲出来,如果有错,一行一行对着改,再自己理解.
你这样是舍近求远.
回复 使用道具 举报
陈圳 发表于 2013-4-16 17:01
int xiao=0,da=shuzu.length,zhong=(xiao+zhong)/2;
你真是有才的人.zhong=(xiao+zhong)/2;
你看着有出 ...

大神。我改完发现一直循环。把zhong=(xiao+da)/2 放进whlie循环里就正确了,能不能解释下这是为什么呢?
回复 使用道具 举报
如果问题已解决,请将主题改为“已解决”
回复 使用道具 举报
田爽 初级黑马 2013-4-16 18:37:34
9#
陈圳 发表于 2013-4-16 18:18
帅哥,这样吧,我把我的好的代码给你,思路都差不多.你跟着看下,

谢谢大神耐心为我解答
回复 使用道具 举报
二分法查找算法·············
回复 使用道具 举报
冯超 发表于 2013-4-16 18:43
二分法查找算法·············

怎么把帖子改成已解决
回复 使用道具 举报
田爽 发表于 2013-4-16 18:45
怎么把帖子改成已解决

帖子下面有个编辑,你打开编缉,然后重选主题分类为己解决.
回复 使用道具 举报
你没有给Zhong这个变量声明什么类型
回复 使用道具 举报
陈圳 发表于 2013-4-16 20:37
帖子下面有个编辑,你打开编缉,然后重选主题分类为己解决.

谢谢 已经改好了  
回复 使用道具 举报
http://roll.sohu.com/20120821/n351144587.shtml
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马