问题:一个文件中有40亿个整数,每个整数为四个字节,内存为1GB,写出一个算法:求出这个文件里的整数里不包含的一个整数。
思路:
申请一个大数组,数组中的每一位表示一个int型数字。由于每个整数为四个字节,总共只有2^32约等于4G种可能,故需要512MB个bit,所以数组的大小为512MB,并初始化为0。
首先遍历40亿个整数,并将对应的bit置为1。对于重复的数字只统计一次,可以使用或操作来实现。
然后遍历一下数组的各个bit,是0就将对应的数字打印出来或保存起来。
代码:
未完待续!
思路:
申请一个大数组,数组中的每一位表示一个int型数字。由于每个整数为四个字节,总共只有2^32约等于4G种可能,故需要512MB个bit,所以数组的大小为512MB,并初始化为0。
首先遍历40亿个整数,并将对应的bit置为1。对于重复的数字只统计一次,可以使用或操作来实现。
然后遍历一下数组的各个bit,是0就将对应的数字打印出来或保存起来。
代码:
未完待续!