Binary search 二进制搜索问题

Binary search 二进制搜索问题,binary-search,Binary Search,对于二进制搜索,在文件中查找记录所需的平均比较次数是多少?我假设这是家庭作业,因此我将提供一个提示,而不是直接的答案。我还假设你被要求找到一个相对准确的答案,而不仅仅是一个大O型答案 可以这样想:每次进行比较时,搜索空间都会减少一半。如果搜索空间大小为S,则在下一次迭代中找到记录的概率为1/S。如果C表示比较次数,则P(在比较C中找到它)=P(在比较C中找不到它)*P(在比较C中找到它|在比较C中找不到它)。这与家庭作业有关。那又怎样?如果问题是你自己解决的话,这里没有人想帮你作弊。问题很奇怪,

对于二进制搜索,在文件中查找记录所需的平均比较次数是多少?

我假设这是家庭作业,因此我将提供一个提示,而不是直接的答案。我还假设你被要求找到一个相对准确的答案,而不仅仅是一个大O型答案


可以这样想:每次进行比较时,搜索空间都会减少一半。如果搜索空间大小为S,则在下一次迭代中找到记录的概率为1/S。如果C表示比较次数,则P(在比较C中找到它)=P(在比较C中找不到它)*P(在比较C中找到它|在比较C中找不到它)。

这与家庭作业有关。那又怎样?如果问题是你自己解决的话,这里没有人想帮你作弊。问题很奇怪,因为你通常不会对文件进行二进制搜索。如果文件中有需要进行二进制搜索的数据,通常会先将其读入内存,然后进行二进制搜索,使被搜索的对象是文件这一点变得无关紧要。如果您试图搜索一个太大而无法读入内存的文件,那么二进制搜索不是您想要的。谢谢,一个大O答案是没有意义的。我认为你的回答不会有帮助,因为它是关于概率的。我不需要概率,我需要数字,但是如果不使用概率,你怎么计算平均数呢?平均值就是C的所有可能值的总和,用它们的概率加权。这就是说,我还没有完全算出数学,但我可以说,如果我算出的话,会相当混乱。这是一个非常糟糕的问题,尤其是如果你的教授坚持精确推导而不是近似。而且,我的直觉是你误解了这个问题,你应该要求澄清。找出你是否真的需要一个精确的答案,如果不需要,它是否只需要渐近正确或对每N都正确。如果它必须对每N都精确,那么它是如此的混乱以至于几乎不可能。