加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用bitmap实现对一千万个无重复的正整数(范围1~1亿)快速排序

发布时间:2020-12-14 04:40:56 所属栏目:大数据 来源:网络整理
导读:1 Bytes(字节) == 8 bit1 KBytes == 1024 Bytes 思路: 1)申请长度为1亿的保存二进制位的数组 a, 2)通过位运算,将整数做为索引,将数组a对应的索引位置为1。 3)重复步骤2,直到最后一个整数放到数组中 4)从头开始遍历数组a,将值为1的索引id打印出来。
1 Bytes(字节)  == 8 bit
1 KBytes  == 1024 Bytes

思路:
1)申请长度为1亿的保存二进制位的数组 a,
2)通过位运算,将整数做为索引,将数组a对应的索引位置为1。
3)重复步骤2,直到最后一个整数放到数组中
4)从头开始遍历数组a,将值为1的索引id打印出来。

python 提供了bytearray这个动态的字节数据,以下代码就用bytearray实现

class Bitmap:
    def __init__(self,num_bits:int):
        self._num_bits = num_bits
        self._bytes = bytearray(num_bits // 8 +1)
    
    
    def setbit(self,k:int) ->None:
        if k > self._num_bits or k < 1:
            return None
        # 通过位左移和 或运算可以将对应的bit置为1
        self._bytes[k//8] |= (1<<k %8)
        
    def getbit(self,k:int)->Optional[bool]:
      
        if k > self._num_bits or k < 1: return
        return self._bytes[k // 8] & (1 << k % 8) != 0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读