假设有20亿个int类型不重复非负数的数字,而我们只有4G的内存空间,如何将其排序?
一个int类型数据占据4个Byte,而1个Byte占据8个bit位。20亿个int大概需要7.45GB的内存。那么4G的空间是决计不够的
我们可以用1bit来存储一个int的目的,只要遍历一下这个bitmap,就可以自然地得到数字序列的排序。并且理论上它所占用的空间只有原来的1/32,20亿个数字,现在只需要230MB左右即可实现。
python 中的int 是有符号的,所以只支持31 个数
class BitMap():
def __init__(self, maxValue):
self._size = int((maxValue + 31 - 1) / 31) # 向上取正 确定数组大小
self.array = [0 for i in