如果您在图书馆组织图书,您将如何存储它们以及您将使用哪种数据结构?“

时间:2009-07-15 14:35:02

标签: data-structures

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

如果你需要做的就是从ISBN转换为相应书籍的商品,那么哈希表可能是一个合理的选择。但是你可能想要考虑如何处理流行书籍,例如畅销书,图书馆可能有很多副本。

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

  • 按标题查找特定图书。有时会有不同的书籍具有相同的标题。
  • 浏览我喜欢的作者的书籍列表
  • 查找特定主题的书籍被搁置的地方,以便我可以浏览它们。

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

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

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

道歉,提出更多问题,而不是提供答案。我希望无论如何这都很有用。

答案 1 :(得分:0)

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

如果您知道ISBN,我肯定不会满足于只允许搜索的系统。如果您只记得作者或标题中的几个字,该怎么办?如果有一个计算机化系统可以获得任何收益,我认为你必须支持灵活的搜索。

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