Arrays 我能以更有效的方式组织这些数据吗?
我正在使用动态筛选实现一系列Arrays 我能以更有效的方式组织这些数据吗?,arrays,indexing,big-o,Arrays,Indexing,Big O,我正在使用动态筛选实现一系列研究项目。我在数据库中有一组表,表示它们与字段的多对多关系,如首席调查员和资助者 因为我希望过滤是动态的,所以我将所有这些数据放在前端并存储在浏览器中,然后用javascript过滤这些数据 目前,我正在提取的数据具有以下结构: research_projects = { "RPGUID1": { "title":"blah", "summary":"balh", "description":"blah
研究项目
。我在数据库中有一组表,表示它们与字段的多对多关系,如首席调查员
和资助者
因为我希望过滤是动态的,所以我将所有这些数据放在前端并存储在浏览器中,然后用javascript过滤这些数据
目前,我正在提取的数据具有以下结构:
research_projects =
{
"RPGUID1":
{
"title":"blah",
"summary":"balh",
"description":"blah",
etc...
},
"RPGUID2":
{
"title":"blah2",
etc...
},
...
}
principal_investigators =
{
"12345":
{
"name":"John D",
"slug":"john-d",
"research_projects":["RPGUID2"]
},
...
}
funders =
{
"aaaa":
{
"name":"funder A",
"slug":"funder-a",
"research_projects":["RPGUID1", "RPGUID2"]
},
...
}
我选择这种安排是为了避免在线性时间内搜索主要的research\u项目
虽然这种结构可以单独用于过滤,但对于我想要的其他功能来说,它效率相当低
下面是函数列表,以及它们在当前结构中的时间复杂性。我需要以尽可能多地优化这些功能的方式重新构造此数据:
根据id
- O(1)
获取给定资助者的所有研究项目
- O(1)查找,在
资助者[研究项目]的大小上呈线性
获取给定研究项目的所有资助者
- 资助者的规模呈线性
和资助者[研究项目]
id
- O(1)
资金方的id
,给定其slug
- 在
资助者的规模中呈线性
感谢好的,数据库的最大优势之一是索引和其他高效算法(例如使用哈希等),一旦加载所有数据,就必须重新实现所有这些算法以获得非常好的性能。。。但这意味着增加内存占用。。。您正在处理多少数据?这对于决定如何处理数据结构非常重要。。。