【发布时间】:2013-03-17 07:43:50
【问题描述】:
我需要为一个非常大的 (50GB+) ASCII 文本文件建立一个索引,这将使我能够提供对文件的快速随机读取访问(获取第 n 行,获取第 n 行中的第 n 个单词)。我决定使用List<List<long>> map,其中map[i][j] 元素是文件中第 i 行的第 j 个单词的位置。
我将按顺序构建索引,即读取整个文件并使用map.Add(new List<long>())(新行)和map[i].Add(position)(新词)填充索引。然后我将使用map[i][j] 检索特定的单词位置。
我看到的唯一问题是我无法预测行/字的总数,所以我会在每次 List 重新分配时遇到 O(n),不知道如何避免这种情况。
我为任务选择的数据结构还有其他问题吗?哪种结构可能更好?
UPD:文件在运行时不会被更改。除了我列出的内容之外,没有其他方法可以检索内容。
【问题讨论】:
标签: c# algorithm list data-structures complexity-theory