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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 aerkadiya 于 2013-5-17 17:44 编辑

class ChaZhao  
{
     public static void main(String[] args)
    {
          int[] arr={2,4,5,7,19,32,45};
          int index = halfSearch(arr,32);
          int index = halfSearch_2(arr,5);
          System.out.println("index="+index);
    }
    public static int halfSearch_2(int[] arr,int key)
    {
         int min = 0,max = arr.length-1,mic;
         while(min<=max)
        {
             mid = (max+min)>>1;
             if(key>arr[mid])
             min = min +1;
             else if(key<arr[mid])
             max = mid-1;
             else
             return mid;
        }
       return -1;
    }
   public static int halfSearch(int[] arr,int key)
   {
        int min,max,mid;
        min = 0;
        max = arr.length-1;
        mid = (max+min)/2;
        while(arr[mid]!=key)
        {
                if (key>arr[mid])
                mid = mid+1;
                else if(key<arr[mid])
                max = mid-1;
               else if(min>max)
                return -1;
                mid = (max+min)/2;
       }
       return mid;
    }
}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1 建议楼主贴上运行出来的错误

查看全部评分

7 个回复

倒序浏览
本帖最后由 徐启坤 于 2013-5-17 17:34 编辑

以后写程序在class前面加上public,一个程序必须要有一个公开类,否则可能会提示找不到主类
回复 使用道具 举报
是编译错误?错误提示是什么?
回复 使用道具 举报
lass ChaZhao  
{
     public static void main(String[] args)
    {
          int[] arr={2,4,5,7,19,32,45};
          int index = halfSearch(arr,32);
          int index = halfSearch_2(arr,5);//已经有一个变量名为index,这个就不能再叫index了 可以叫index1嘛
          System.out.println("index="+index);
    }
    public static int halfSearch_2(int[] arr,int key)
    {
         int min = 0,max = arr.length-1,mic;//mid你打成了mic了第二个错误
         while(min<=max)
        {
             mid = (max+min)>>1;
             if(key>arr[mid])
             min = min +1;
             else if(key<arr[mid])
             max = mid-1;
             else
             return mid;
        }
       return -1;
    }
   public static int halfSearch(int[] arr,int key)
   {
        int min,max,mid;
        min = 0;
        max = arr.length-1;
        mid = (max+min)/2;
        while(arr[mid]!=key)
        {
                if (key>arr[mid])
                mid = mid+1;
                else if(key<arr[mid])
                max = mid-1;
               else if(min>max)
                return -1;
                mid = (max+min)/2;
       }
       return mid;
    }
}

评分

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

查看全部评分

回复 使用道具 举报
运行后显示找不到mid符号。可是按照4楼的修改后运行出来就是一个闪的光标,什么都没有啊
回复 使用道具 举报
  1. class ChaZhao  
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr={2,4,5,7,19,32,45};
  6.                 int index = halfSearch(arr,32);
  7. //                int index = halfSearch_2(arr,5); //你也够粗心的 至少要保证程序中成员的唯一性,定义过一个index了,下一个就给注释了,或是在定义一个index1,避免报错嘛
  8.                 System.out.println("index="+index);
  9.         }
  10.         public static int halfSearch_2(int[] arr,int key)
  11.         {
  12.                 int min = 0,max = arr.length-1,mid; //这里mic是什么,应该是mid吧,不然程序没法编译
  13.                 while(min<=max)
  14.                 {
  15.                         mid = (max+min)>>1;
  16.                 if(key>arr[mid])
  17.                         min = min +1;
  18.                 else if(key<arr[mid])
  19.                         max = mid-1;
  20.                 else
  21.                         return mid;
  22.                 }
  23.                 return -1;
  24.         }
  25.         public static int halfSearch(int[] arr,int key)
  26.         {
  27.                 int min,max,mid;
  28.                 min = 0;
  29.                 max = arr.length-1;
  30.                 mid = (max+min)/2;
  31.                 while(arr[mid]!=key)
  32.                 {
  33.                         if (key>arr[mid])
  34.                                 min = mid+1; //这里显然是min加1,而不是mid加1
  35.                         else if(key<arr[mid])
  36.                                 max = mid-1;
  37.                         else if(min>max)
  38.                                 return -1;
  39.                         mid = (max+min)/2;
  40.                 }
  41.                 return mid;
  42.         }
  43. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
我运行过了
首先是index 定义了两次
再是定义你mid时写错了,你定成mic了,还有一个地方,给min赋新值时min也写成了mid
这样就可以了,找32的换一个变量名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马