我正在尝试编程珍珠之一:
给定一个最多包含一千万个没有重复的 7 位整数的文件。仅使用 1.5Mb RAM 并仅读取一次数据以升序打印这些数字的有效方法是什么?只有 1Mb 的 RAM 而没有其他存储的后果是什么?如果允许重复,您的答案将如何变化?
为了创建一个测试用例,我生成了 8999999 个数字并将它们写入一个文件。然后对于每一行,我开始将相同的插入到树中,最后创建一个 trie 结构。
示例代码:
from sys import getsizeof
tree = dict()
xtree = dict()
f = open("data2.txt", "r")
cnt = 0
for number in f:
cnt += 1
currTree = tree
xtree[number] = dict()
for n in number.strip():
if n not in currTree:
currTree[n] = dict()
currTree = currTree[n]
f.close()
print(cnt)
print(getsizeof(tree))
print(getsizeof(xtree))
print(tree)
示例文件 data2.txt 有 20 条记录
生成的树是
现在的问题是,当我对构建的树进行内存大小调整时,它在 20 行显示了 240 字节的内存占用空间
在 100 行,树的大小变为 368 字节
在 8999999 行也给出 368 个字节
我建立了一个名为的辅助地图xtree
,它只提供数据
xtree 和 tree 的大小以字节为单位。
谁能解释一下这是怎么回事..??