首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二分查找故障

二分查找故障
EN

Stack Overflow用户
提问于 2016-08-12 05:28:54
回答 1查看 60关注 0票数 2

所以我试图对电影导演的DVD对象数组进行二进制搜索,但我遇到了一点小麻烦。当我运行我的二进制搜索时,它只表明导演不在电影集合中,当它在时。我仍然不是最擅长搜索的人,所以任何给我指明正确方向的建议都将不胜感激。

代码语言:javascript
复制
public int binarySearch(String key) {
int low=0,high=collection.length-1,mid=(low+high)/2;
  while (low <= high && collection[mid].getDirector().compareTo(key)!=0) {

      if (key.compareTo(collection[mid].getDirector())>0){
          low = mid + 1;
      } 
      else {
          high = mid - 1;
      }
      mid=(low+high)/2;
  }
  if (low>high){
    System.out.print("the director is not in your dvd collection");
      return -1;
  }
      else
 System.out.print("the movie by director " + collection[mid].getDirector() + " is in index ");
  return mid;
      }
EN

回答 1

Stack Overflow用户

发布于 2016-08-12 05:51:57

首先,确保您的数组是按控制器排序的,例如:

代码语言:javascript
复制
Comparator<DVD> comparator = Comparator.comparing(DVD::getDirector);
Arrays.sort(collection, comparator);

然后,使用JDK的二进制搜索:

代码语言:javascript
复制
int index = Arrays.binarySearch(collection, new DVD() {
  @Override
  String getDirector() {
    return key;
  }
}, comparator);

感谢简化了我笨拙的lambda!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38906438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档