【问题标题】:Sort out Books - Search related question整理书籍 - 搜索相关问题
【发布时间】:2011-04-14 11:25:27
【问题描述】:

我最近在技术面试中被问到一个这样的问题。

你必须在图书馆里找到一本特定的书,当你进去的那一刻,你看到所有的书都散落在图书馆周围,即图书馆内的书籍没有被整齐地放置。你将如何继续寻找那本特定的书?除了你知道Name of the Book之外,没有关于这本书的规范。

我知道这与某些搜索算法有关,但是在这种情况下可以使用什么算法来搜索书籍?

【问题讨论】:

  • 好吧,如果没有系统,你就得看每一本书。我想诀窍是想出一个系统,确保最终你检查每本书,而不是看同一本书两次。
  • @aix - 如果这本书不是想要的,就把它扔出窗外:P
  • @Petar Minchev:好建议。如果你在地下室可能会很棘手:)

标签: algorithm search


【解决方案1】:

从第一本书开始执行线性搜索,然后搜索每本书,直到找到您想要的书的第一次出现(当然可能有多个副本)。

如果您是唯一的搜索者并且有很多书籍,那么在查找书籍之前对它们进行排序似乎是一种非常低效的浪费时间 - 除非您打算将来搜索更多书籍。

您可以随时让图书管理员告诉您这本书在他们的系统上的位置,或者您可以邀请一些朋友帮助您搜索和拆分问题并并行工作。

编辑 还有一种称为Grovers algorithm 的量子算法(如果你喜欢这种东西),它比线性搜索未排序的数据库要快,但老实说,我不太了解它。

【讨论】:

  • 如果你想要“现实生活”的解决方案,我也会在谷歌上搜索名称以查找书籍封面的颜色。可以缩小搜索范围。
【解决方案2】:

在这种情况下,你要么

  • 对书籍进行排序,然后使用搜索算法(例如二分搜索)进行搜索。如果您有时可能需要搜索另一本书,这是一个很好的方法
  • 通过浏览整个图书列表来搜索图书,一旦找到就可以停下来

【讨论】: