编写二进制搜索方法,当在数组中找到单词时,很难返回1(true).[家庭作业]



我正试图为家庭作业编写一个简单的拼写检查程序,基本上是将一本包含80000个单词的词典放入一个数组中,然后进行二进制搜索,看看这个单词是否在数组中。

我相信问题在于第一个if语句,以及我的break和return 1行,但我可能错了。我想做的是,如果数组中点的单词与字符串相同,那么它应该跳出if语句和while循环并返回1,如果不相同,我希望它继续搜索。

目前,每当我运行该程序时,它都会说找不到这个词,无论这个词是否真的在字典里。

我们非常感谢在我出错的地方提供任何帮助。

int binarySearch(char string[9]) {
  int low = 0;
  int high = NUMBEROFDICTIONARYWORDS;
  int midPoint;
  char midPointWord[9];
  while(high > (low + 1)) {
    midPoint = (low + high) / 2;
    midPointWord[9] = dictionary[midPoint];
    if(strcmp(string, midPointWord) == 0) {
    return 1;
    break;
    break;
    } else
    if(strcmp(string, midPointWord) < 0) {
    high = midPoint;
    } else
  low = midPoint;
  }
  return 0;
}

midPointWord[9] = dictionary[midPoint];只分配midPointWord的索引9,在这种情况下,这样做是无效的,因为它已经超过了数组的末尾。我猜dictionary有点像char**,在这种情况下,您希望将midPointWord声明为char*

最新更新