为方案A和B选择哪种数据结构,如下所述

时间:2013-12-05 22:17:56

标签: algorithm data-structures

我在问题库中找到了以下内容,我正在寻找一些帮助。

  

对于以下每种情况,请选择最佳数据结构并证明您的选择合理   应从以下可能性中选择数据结构:无序列表,有序数组,堆,哈希表,二叉搜索树。

     

(a)(4分)您的结构需要存储可能非常大量的记录,并在数据到达时添加数据。您需要能够通过其主键检索记录,并且这些键在数据到达的顺序方面是随机的。记录也可以随机删除,并且对数据的所有修改都需要在用户提交后立即完成。您不知道数据集的大小,但数据结构实现需要在几周内准备就绪。在设计程序时,实际编程将由合作学生完成。

对于答案,我认为BST将是最佳选择。

由于尺寸不明确,散列表不是一个好选择 由于存在删除问题,因此堆也不可接受。

我的推理是否正确?

  

(b)(4分)您正在管理大型仓库商店的库存数据。每周都会从库存系统中添加和删除新项目(带有新产品密钥),但这会在商店连续12小时关闭时完成。

     

项目数量经常变化:随着库存增加而递增,并在销售时递减。库存和销售物品需要使用产品密钥从系统中检索物品。

     

系统稳健,经过良好测试并具有可预测的行为也很重要。检索项目的延迟是不可接受的,因为它可能会给销售人员带来问题。该系统可能会被使用很长时间,但很大程度上它只是可能被修改的前端。

对于这部分,我认为是heapsort,但我不知道如何证明我的答案。

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

(a)需要快速插入和删除,您需要基于密钥检索。因此,我会使用哈希表或二叉搜索树。但是,由于事先并不知道大小,并且存在截止日期限制,我认为二叉搜索树是最佳选择。

(b)您有足够的时间在插入/删除后处理数据但需要O(1)随机访问。有序数组应该可以解决问题。