2016-02-11 113 views
0

我试图在其中一个联系人可以存储为“名”,“姓”,并按照字母顺序“电话号码”的数据结构。随着电话簿更新的发生,新联系人从电话簿中移除或删除。
以下是执行所需任务时必须牢记的两个因素。数据结构的建议

  • 可用空间有限。
  • 访问特定联系人所需的时间不得超过给定阈值。

如果我使用散列表,尽管速度够快,但它会占用很多空间。
那么如果有2GB的空间限制,我应该使用什么数据结构?

+1

2GB是一个硬盘限制,没有数据结构可以克服。你是什​​么意思,如果你要使用散列表,那么你将面临打击问题? – Mox

+0

为什么它的硬件很多智能手机有2 GB的内存限制,并为thresh持有读第二个要点 – router

+1

假设你有4 GB的数据需要加载,你的2GB内存如何帮助?它不能用任何数据结构解决。至于按字母顺序访问元素,您可能会考虑使用平衡二叉搜索树(C++:Map,Java:TreeMap) – Mox

回答

1

如该意见提出,如果有2 GB的硬性限制,它本质上意味着需要的恒定空间复杂性的数据结构。
不幸的是,不存在这样的数据结构。

在另一方面,Self-balancing binary search tree是在时间和空间复杂度之间的权衡方面一个很好的数据结构。

看看这个link其他各种数据结构的时间和空间复杂度。