二进制搜索"字典" (二维数组)

时间:2014-11-28 11:43:52

标签: arrays algorithm binary-search

假设我们有n个字词和n/k"页面" (假设n/k是一个自然数)。所以我们有一本"字典"这实际上是一个"页面的数组"其中每个页面也是一个数组,并且有k个单词。

对单词进行排序,使得页面i中的所有单词在词典上都小于页面i+1中的单词,但是每页中的单词都不是'\ t}排序

我需要编写一种方法来查找"字典"中的特定单词。我知道我应该使用二进制搜索来找到正确的页面,但我不确定如何,因为每个页面中的单词都没有排序。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

如果您不知道每页上排序的第一个/最后一个单词是什么,那么二进制搜索只能找到哪一页可能包含该单词。

如果" top"页面中的单词出现在您想要的单词之前,然后您可以在此之前删除所有页面,但不能那个页面;在你的话之后,页面上可能会有另一个词。

如果页面中的首字出现在您想要的单词之后,那么您可以删除之后的所有页面,但不能那个页面;页面上可能还有另一个词出现在你的话语之前。

所以当你完成二进制搜索时,你会留下两页;页面 N ,其首字小于您想要的那个,页面 N + 1 ,其首字大于您想要的字。

然后,您必须在两个页面上进行线性搜索才能找到该单词。

相关问题