荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (毕业生【一个人的精彩】), 信区: Java
标  题: Re: 几个java的面试题目
发信站: 荔园晨风BBS站 (Fri Dec 28 14:44:54 2001), 转信

4.
  /**
   * 递归实现
   * 用折半查找算法在一有序数组中查找key值。若找到,返回其下标值,否则返
回-1
   * 参数:char list[]   待查找的字符数组
   *       int low       待查找的字符数组的最左下标
   *       int high      待查找的字符数组的最右下标
   *       char key      要查找的值
   *       boolean flag  待查找的字符数组的排列方式,true是升序,false是
降序
   */
  public int BinSearch2(char[] list, int low, int high, char key,
boolean flag) {
    int mid;
    char midvalue;

    if (low <= high) {
      mid = (low + high) / 2;
      midvalue = list[mid];
      if (key == midvalue)
        return mid;
      else if (key < midvalue) {
        if (flag == true)
          return this.BinSearch2(list, low, mid - 1, key, flag);
        else
          return this.BinSearch2(list, mid + 1, high, key, flag);
      }
      else {
        if (flag == true)
          return this.BinSearch2(list, mid + 1, high, key, flag);
        else
          return this.BinSearch2(list, low, mid - 1, key, flag);
      }
    }
    else
      return -1;                  //元素没有找到
  }

  /**
   * 循环实现
   * 用折半查找算法在一有序数组中查找key值。若找到,返回其下标值,否则返
回-1
   * 参数:char list[]   待查找的字符数组
   *       int low       待查找的字符数组的最左下标
   *       int high      待查找的字符数组的最右下标
   *       char key      要查找的值
   *       boolean flag  待查找的字符数组的排列方式,true是升序,false是
降序
   */
  public int BinSearch1(char[] list, int low, int high, char key,
boolean flag) {
    int mid;
    char midvalue;

    while (low <= high) {
      mid = (low + high) / 2;     //子表中中间元素的下标
      midvalue = list[mid];       //中间元素的值
      if (key == midvalue)
        return mid;               //找到key值,返回其下标值
      else if (key < midvalue) {
        if (flag == true)
          high = mid - 1;         //继续查找子表的左半部分
        else
          low = mid + 1;          //继续查找子表的右半部分
      }
      else
        if (flag == true)
          low = mid + 1;          //继续查找子表的右半部分
        else
          high = mid -1;          //继续查找子表的左半部分
    }

    return -1;                    //元素没有找到
  }
【 在 Deny (图形文件中几何参数的测量——毕业设计) 的大作中提到: 】
: 1、创建线程有几种方法,最effecitve的是哪个?
: 2、int i,j,k;
:    for(i=0;i<10;i++)
:      System.out.writln("abc"+i+j+k);
:    一共创建了几个string object?
:    有没有更好的code
: 3、CButton abc = new CButton("xyz")
:    CButton buf[] = new CButton[10];
:    1)
:      for(int i=0;i<10;i++)
:        buf[i] = abc;
:      question:一共创建了几个Button类
:    2)
:      for(int i=0;i<10;i++)
:        buf[i] = abc.clone()
:      question:一共创建了几个Button类
: 4、用递归实现char array的binary search


--
前路就算似障碍赛,历尽艰辛总把头抬
背起笑声,收起我感慨
活出真我的风采

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.238]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店