2011-04-14 72 views
4

我最近在技術面試中被問到過這樣的問題。整理圖書 - 搜索相關問題

你必須找到一個特定的書在圖書館和你走了進去的那一刻,你看到所有的書散落各地的圖書館,即書不放在庫內有組織的方式。你將如何繼續尋找那本特定的書?除了您知道Name of the Book之外,沒有關於該書的規範。

我知道這是一些相關的搜索算法,但是哪種算法可用於在這種情況下,搜索的書嗎?

+2

好吧,如果沒有系統,你必須看每本書。我想這個訣竅是提出一個系統,以確保最終你檢查每本書,而不是兩次看同一本書。 – NPE 2011-04-14 11:30:48

+3

@aix - 把書從窗口扔出來,如果它不是想要的:P – 2011-04-14 11:33:46

+2

@Petar Minchev:好的建議。如果你在地下室但可能會很難處理:) – NPE 2011-04-14 11:35:21

回答

2

進行線性搜索開始在一個良好的方法第一本書,並搜索每本書,直到你遇到你想要的書的第一次出現(當然可能有多個副本)。

如果你是唯一的搜索者,並且有很多書,那麼在查找書之前對它們進行排序看起來會浪費很多時間 - 除非你打算在將來尋找更多書籍。

你總是可以找圖書館管理員告訴你在哪裏這本書是他們的系統上,或者你可以招募一些朋友來幫你搜索和並行分裂問題並工作。

編輯 還有一個叫Grovers algorithm量子算法(如果你在對諸如此類的事情),比對未排序的數據庫進行線性搜索快,但我不知道太多關於說實話。

+0

+1好的總結。 – NPE 2011-04-14 11:38:47

+1

如果你想「現實生活」的解決方案,我也谷歌的名字,以找到書的封面的顏色。可以縮小搜索範圍。 – Niklas 2011-04-14 12:49:35

0

在這種情況下,你要麼

  • 書排序和與搜索算法(例如二進制搜索),然後搜索。這是,如果你可能需要尋找另一本書有時
  • 通過書的整個列表去,你可以停止搜索書,一旦你發現它