【发布时间】:2015-02-12 01:59:04
【问题描述】:
用例:
- 元素的值介于 0 和 Infinity 之间
用户可以进行如下查询:“给我前 30% 的元素中的最低值”
我们可以存储 1000 个顶部元素,并且可以随时添加更多元素。
你可以使用什么数据结构来完成这项工作?
我认为向量可以在哪里工作,但对于插入和检索可能不是最有效的。
设想:保持数组排序。如果用户要求满足 30% 分布的最低元素,则执行 array.length * 0.7,并返回该元素。
【问题讨论】:
-
有取舍。例如,数组在读取性能方面非常出色,但在添加和删除方面却很糟糕。二叉树非常适合以检索为代价进行修改。 B树介于两者之间
-
hmm 这让我想起了我读过的一篇关于体素引擎数据存储的文章。显然,最好的方法是将数据存储为换行字符串,并且每个运行长度都是间隔树的良好表示。 "0fps.net/2012/01/14/an-analysis-of-minecraft-like-engines"
-
我们需要更多可能的查询和大小限制的示例。鉴于该示例,每个元素的排序数组,并选择长度 * 0.7 个元素,似乎是最好的。
标签: data-structures