2

我有一个巨大的键值对映射,大约 10^7,我必须每秒循环 15 次才能更新其内容是否有任何类或结构可以提供良好的复杂性并减少所需的时间循环通过?

目前,我正在使用TreeMap,但复杂性是log n仅用于包含、放置、获取和删除。循环遍历元素的复杂度为 n

您是否知道任何结构,或者您是否有任何想法可以将复杂性降低到 n 以下

4

2 回答 2

5

如果您必须对整个集合进行任意循环,您将不会比 n 更好。如果你必须循环整个集合,你可以使用一个简单的 ArrayList。但如果您需要使用键访问集合中的特定数据,TreeMap 就可以了。

于 2011-08-01T20:09:33.260 回答
0

如果您的问题只是查看所有 O(n) 值,则您无法击败任何顺序(或有限并行)计算机上的 O(n) 界限。

如果您有一台有限并行机器,并且取决于您更新元素的确切方式,您可以实现加速。例如,使用 CUDA 和 GPU 或 OpenMP/MPI 和集群/多核工作站,您可以计算 A[i] = A[i]^3 或一些具有良好加速的类似。当然,还有沟通的问题……但这可能是值得关注的。

于 2011-08-01T20:21:06.213 回答