【发布时间】:2012-05-30 13:02:56
【问题描述】:
这不是一个现实生活中的问题,它只是理论制作。
我有一个大数组,其中包含像 [1,140,245,123443] 这样的元素,所有
低选择性的整数或浮点数,唯一值个数为 10
小于数组大小的倍数。在这种情况下,B*tree 索引并不好。
我也尝试过实现位图索引,但是在 Ruby 中,二进制操作并没有那么快。
有没有什么好的算法可以搜索固定大小向量的二维数组?
而且,主要问题是,如何将向量转换为值,其中转换函数必须是单调的,所以我可以应用范围查询,例如:
(v[0]<10, v[2]>100, v[3]=32, 0.67*10^-8<v[4]<1.2154241410*10^-6)
我唯一的想法是为向量的每个组件创建单独的排序索引...然后进行二进制搜索并合并...但这是一个坏主意,因为在最坏的情况下它需要 O(N*N ) 操作...
【问题讨论】:
-
哦,你想找到一行符合一系列条件的元素吗?是这样吗?
-
是的,我想在 ruby 上这样做)
-
你总是可以在你的 Ruby 中添加一些 C :)
标签: ruby algorithm search multidimensional-array