建议业务需求的数据结构

时间:2011-10-10 13:11:54

标签: data-structures

我的记录结构如下: - (名称,选项,StartNum,EndNum,空缺)

Name,Option,StartNum,EndNum构成结构/表的复合键。因此,对于这些的特定组合,将只有一个空缺记录。

样本记录

ABC,X,2,14,1
ADE,X,3,8,0
AEF,Y,1,12,2
ERF,X,12,13,17

可能有:

  1. 250-300名称

  2. 每个名字 20-30选项

  3. 对于每个选项 1-45 StartNum

  4. 对于每个StartNum 1-14 EndNum

  5. 对于上述条目的每个组合,只有一个空缺条目。

  6. 因此最多可以有5,670,000(300 * 30 * 45 * 14)条目

    支持

    的快速操作
    1. 搜索复合键,即(Name + Option + StartNum + EndNum)并获取它的空缺记录值
    2. 对于给定的名称,选项和数字,搜索和删除具有给定名称,选项和StartNum< = Number< = EndNum
    3. 的记录

      任何人都可以为我的上述要求建议适当的数据结构。数据结构构建操作在离线时可能很慢,但上面提到的两个操作应该非常快。

      谢谢,
      哈里什

2 个答案:

答案 0 :(得分:2)

我会根据元组(Name,Option)创建一个哈希映射。对于这两者的每个组合,可以有一个简单的列表,按(StartNum,EndNum)排序。插入该列表的大小为O(N),但您知道该大小非常小。另一种选择是一些平衡的二叉搜索树或跳过列表。

如果你有一个好的哈希(不应该很难,标准的哈希应该有效),检索的时间复杂度将是O(1 + log(| StartNum | * | EndNum |))。

按2.搜索时,检查所有具有StartNum< = Number的值是否匹配EndNum。

答案 1 :(得分:0)

哈希映射应该很好地满足您的目的。您只需要弄清楚如何为复合键创建一个好的哈希。如果您已经为各个项目设置了哈希值,则可以combine these using a simple XOR