python BitMap实现

在有限内存条件下,如4G内存,面对20亿个不重复的非负整数排序问题,可以利用Bitmap(位图)策略。通过1bit表示1个int,将所需内存降至230MB左右,实现排序。Python中虽然int有符号限制,但依然能支持31个数的Bitmap操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值