问题描述

给定一个保存数以亿计的 IP 地址的文件:

以及一个保存 IP 地址范围及其信息的文件(百万行):

其中,第一个文件无法完全装入内存,第二个文件可以装入内存。要求:求出第一个文件中的每个 IP 地址的信息。比如:


思路

将第二个文件中的每个数据项里的 IP 地址转换成整数,然后将其放入一个顺序表中,并且按照起始 IP 地址进行排序。

当查询某个 IP 地址所处的地址范围时,先将 IP 地址转换成整数,然后使用二分查找算法在上面的顺序表中进行查找。

为加快效率,可以把第一个文件切片,然后并行地在每个切片上进行搜索。


Python 实现