【问题标题】:If you were organizing books in a library, how would you store them and what data structure would you use?"如果你在图书馆里组织书籍,你会如何存储它们,你会使用什么数据结构?”
【发布时间】:2009-08-11 01:30:39
【问题描述】:

我会使用哈希表并使用 ISBN 号作为键。因为这会给我一个 O(1) 的查找时间....因为在哈希表中查找的平均时间是 O(1)....

我们也可以使用二叉搜索树.....查找时间是O(nlogn)...

你们会使用什么数据结构,为什么?

【问题讨论】:

  • 您是在询问整理图书馆书架上的实体书籍,还是整理电子卡片目录中的书籍信息?
  • @Keith - 你的意思是聚集或非聚集索引... ;)
  • Keith:我是说电子目录
  • 这是关于库还是关于数据结构的问题?无论哪种方式,它似乎都没有多大意义。
  • 我们没有使用 DB...我们需要使用其中一种数据结构

标签: data-structures


【解决方案1】:

这听起来像是一个家庭作业或面试问题。如果我问它,我感兴趣的不仅仅是你是否了解几个数据结构。我还想知道您如何分析现实世界的问题并将其转化为计算机和数据结构的世界。

因此,在选择数据结构之前,您可能应该考虑需要对数据执行哪些操作。您还应该考虑一些真正的库和一些可能会产生您选择的任何数据结构的“陷阱”。

如果您只需将 ISBN 转换为相应书籍的目录条目,那么哈希表可能是一个合理的选择。但是您可能想考虑如何处理图书馆可能拥有许多副本的畅销书,例如畅销书。

但是 ISBN 查找真的是重要的用例吗?我一直在使用我当地的图书馆,而且我从不按 ISBN 查找书籍。我做的一些事情是:

  • 按标题查找特定书籍。有时会有同名的不同书籍。
  • 浏览我喜欢的作者的书籍列表
  • 查找有关特定主题的书籍的搁置位置,以便我浏览它们。

图书馆员可能对目录系统还有其他用途:

  • 将新书添加到目录中
  • 将图书标记为已签出
  • 更改图书的列表信息,例如主题分类

所以我想我的建议是在决定解决方案之前更仔细地考虑要解决的问题。

很抱歉提出更多问题而不是提供答案。无论如何,我希望这会有所帮助。

【讨论】:

  • 优秀的基思...这对我帮助很大
【解决方案2】:

嗯...我不认为设计数据结构来存储书籍信息最难解决的问题是查找速度。

而且我当然不会满足于仅在您知道 ISBN 的情况下才允许搜索的系统。如果您只记得作者或标题中的几句话怎么办?在我看来,如果拥有一个计算机化系统有什么好处,你必须支持灵活的搜索。

我可能会考虑使用Dublin Core,但我完全不确定这是“正确”的做法。不过,似乎人们花了很多时间思考这个问题。

【讨论】:

    猜你喜欢
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    相关资源
    最近更新 更多