【问题标题】:binary search question二分查找问题
【发布时间】:2010-03-09 15:22:12
【问题描述】:

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

【问题讨论】:

  • 跟作业有关。那又怎样?
  • 所以如果重点是你自己想办法,这里没有人愿意帮你作弊。
  • 这个问题很奇怪,因为您通常不会对文件进行二进制搜索。如果您希望在文件中进行二进制搜索,则通常会先将其读入内存,然后进行二进制搜索,从而使所搜索的内容与文件无关。如果您要搜索的文件太大而无法读入内存,则二进制搜索不是您想要的。

标签: binary-search


【解决方案1】:

我假设这是家庭作业,所以我将提供提示而不是直截了当的答案。我还假设您被要求找到一个相对准确的答案,而不仅仅是一个大 O 答案。

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

【讨论】:

  • 谢谢,一个大答案是没有意义的。我认为您的回答无济于事,因为它与概率有关。我不需要概率,我需要数字。
  • 但是如果不使用概率,您将如何计算平均值?平均值只是 C 的所有可能值的总和,由它们的概率加权。也就是说,我还没有完全计算出数学,但我可以说如果我这样做会相当混乱。这是一个非常邪恶的问题,特别是如果你的教授是一个坚持精确推导而不是近似值的人。
  • 另外,我的直觉是你误解了这个问题,你应该要求澄清。找出你是否真的需要一个精确的答案,如果不需要,它是否只需要渐近正确或对每个 N 都正确。如果它必须对每个 N 都是精确的,那真是太混乱了几乎是不可能的。