【发布时间】:2012-05-30 09:52:22
【问题描述】:
我有大量的SortedSet<Long> 结构:
1, 2, 5, 8, 10, 35, 77, ...
5, 9, 35, 50, 132, ...
2, 4, 8, 15, 17, 23, ...
... hundreds of thousands of such rows...
我需要找到一个数字,比如50。在这个例子中(如果只有三组)它是77。集合的数量是巨大的 - 数十万。你会建议什么算法?
【问题讨论】:
-
您的意思是要合并列表的给定值 (
50) 之后的下一个值吗? -
是的,完全来自“合并列表”
-
如果77出现在多个集合中怎么办?你关心哪一组,或者你只是想在任何一组中找到下一个最高的数字?另外,如果不同的集合包含 50 个呢?该实例是 50“下一个”,还是“下一个成员严格大于“当前”值”?您的问题未详细说明。
-
您也没有提到集合是否会在查询之间更新。如果没有,只需创建一个合并的排序值集即可。
-
(1) 你能告诉我们每组的大小吗? (2) 您需要运行多少个这样的查询? (3) 集合可以在查询之间改变,还是一成不变?
标签: java algorithm search sorting