首页 > 试题广场 >

一个有10亿条记录的文本文件,已按照关键字排好序存储。请设计

[问答题]
一个有10亿条记录的文本文件,已按照关键字排好序存储。请设计算法,可以快速的从文件中查找指字关键字的记录。
10亿在 G量级, 可以分成100份, 这样每份就是10M量级, 基本上放入内存无压力了.
在这10亿记录中, 均分为100份, 把每份的第一条记录关键字和此记录对应的文件偏移量先扫入内存(类似索引), 这样可以马上定位出指定关键字所在的记录块, 把相应的记录块拿到内存, 二分查找即可.
发表于 2016-06-24 07:57:26 回复(0)
更多回答
根据关键字做哈希,把数据分成N份,每份数据的关键字哈希值相同,然后通过计算哈希值确定在哪份数据中,之后加载这部分数据,从中查找,具体的查找方法,可以用折半来查。
发表于 2016-06-24 14:22:23 回复(1)
关键字假设按升序存储在数组里,可采用折半查找:

编辑于 2015-03-29 10:55:12 回复(1)