我在问题库中找到了以下内容,我正在寻找一些帮助。
对于以下每种情况,请选择最佳数据结构并证明您的选择合理 应从以下可能性中选择数据结构:无序列表,有序数组,堆,哈希表,二叉搜索树。
(a)(4分)您的结构需要存储可能非常大量的记录,并在数据到达时添加数据。您需要能够通过其主键检索记录,并且这些键在数据到达的顺序方面是随机的。记录也可以随机删除,并且对数据的所有修改都需要在用户提交后立即完成。您不知道数据集的大小,但数据结构实现需要在几周内准备就绪。在设计程序时,实际编程将由合作学生完成。
对于答案,我认为BST将是最佳选择。
由于尺寸不明确,散列表不是一个好选择 由于存在删除问题,因此堆也不可接受。
我的推理是否正确?
(b)(4分)您正在管理大型仓库商店的库存数据。每周都会从库存系统中添加和删除新项目(带有新产品密钥),但这会在商店连续12小时关闭时完成。
项目数量经常变化:随着库存增加而递增,并在销售时递减。库存和销售物品需要使用产品密钥从系统中检索物品。
系统稳健,经过良好测试并具有可预测的行为也很重要。检索项目的延迟是不可接受的,因为它可能会给销售人员带来问题。该系统可能会被使用很长时间,但很大程度上它只是可能被修改的前端。
对于这部分,我认为是heapsort,但我不知道如何证明我的答案。
你能帮我吗?
答案 0 :(得分:1)
(a)需要快速插入和删除,您需要基于密钥检索。因此,我会使用哈希表或二叉搜索树。但是,由于事先并不知道大小,并且存在截止日期限制,我认为二叉搜索树是最佳选择。
(b)您有足够的时间在插入/删除后处理数据但需要O(1)随机访问。有序数组应该可以解决问题。