Python bitmap数据结构算法具体实现

博客探讨了Python中bitmap数据结构的原理、适用场景、优缺点,并提供了详细的实现代码,包括排序、去重、查找以及集合操作。文章介绍了三种初始化bitmap的方法,并建议在处理海量数据时采用初始化时指定最大值的方式以优化性能。测试结果未在摘要中给出。
摘要由CSDN通过智能技术生成

bitmap数据结构的原理、适用场景以及优缺点等在下链接中有详细说明,在此不再赘述。

https://blog.csdn.net/pipisorry/article/details/62443757?utm_source=itdadao&utm_medium=referral

最近在学python时,学到bitmap算法,于是搜了相关资料,看大家都在说原理及适用场景等,代码给的比较简略,仅给出bitmap数据结构最常用的方法,即排序、去重、查找的代码。在弄懂原理后,自己把实现代码写了一遍,与搜到的资料相比。增加了集合的相关操作方法(and_、or_、andNot、xor),相关用法参见注释。在此做下笔记,也供大家参考。

有三种初始化的方式:

1、bitmap = Bitmap() 

不指定数据,也不指定最大值,通过bitmap.set(num)来增加数据,此方式为实际使用时的初始化方式,因为bitmap适用的场景是海量数据,也就是说无法一次性将数据加载到内存中,因此,也无法获取最大值,更无法获取全部的数据列表

2、bitmap = Bitmap(array=list)

以数据列表list初始化bitmap,此方式一般用于测试初始化

3、bitmap = Bitmap(maxValue=max) 

指定最大值初始化,后续也是通过bitmap.set(num)来增加数据,如果大概知道要处理数据最大值时,可通过此方式初始化,避免在增加数据时频繁地改变数组大长度,提高性能。此方式指定的值即使不是数据中的最大值班也没关系,遇到最大值时,会自动地去改变数组的长度。

因此,推荐使用第3种方式初始化,但max的值要相对合理。

 

class Bitmap:
    def __init__(self, maxValue=31,array=None):
        if maxValue < 0 :
            raise BaseException("最大值不能小于0。")
        self.max = maxValue
        if array:
            self.max = int(max(array))
        self.size = self.__getIndex(self.max)[0] + 1
        self.array = [0] * self.size
        if array:
            for i in ran
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值