【发布时间】:2012-04-26 06:28:06
【问题描述】:
我有一个 JavaScript 程序,我将在其中管理大量整数范围。在这种情况下,范围只是一个开始和结束值(或任何等效的值,如开始和长度值),并引用另一个对象。范围可以重叠,也可以相同(尽管引用的对象会不同)。
可能的开始值和结束值介于 0 和 4294967295(232 - 1 或 0xFFFFFFFF)之间,尽管域中有几个大的“漏洞”,任何范围都无法覆盖,甚至部分。与可能性域相比,大多数范围都非常小:我预计绝大多数的长度都小于 2000。
我对这个结构最重要的用例是查找包含给定整数值的所有范围。大多数时候,我预计查找会失败(不会有包含给定值的范围)。
否则,我显然还需要向其中添加元素(经常)并从中删除元素(很少)。有时,我也需要找到与给定范围重叠的所有范围,而不是所有包含单个值的范围。
我可以为此使用哪种数据结构?在范围列表中进行线性搜索是不切实际的,因为大多数情况下查找都会失败;而且我需要非常非常频繁地进行查找。
【问题讨论】:
-
范围是否以 0 和 max_int 为界?还是 -inf 转 inf?
-
什么是范围?只是
[min, max]对吗? -
@kojiro,是的,
[start, end]或[start, length],两者都可以。 -
你在什么环境下编程?这必须适用于对稀疏数组的属性没有确定顺序的旧 JS 实现吗?
-
有多少个范围?它是数千、数百万,还是应该有任何可能的数字(即,甚至数十亿)?
标签: javascript data-structures