位图Bitmap使用方法
方法 bitmap 位图 使用
2023-09-11 14:17:12 时间
BitMap算法的核心思想是用bit数组来记录0-1两种状态,然后再将具体数据映射到这个比特数组的具体位置,这个比特位设置成0表示数据不存在,设置成1表示数据存在。
BitMap算在在大量数据查询、去重等应用场景中使用的比较多,这个算法具有比较高的空间利用率。
class Bitmap(): def __init__(self,max): self.size=int((max+31-1)/31) # 计算有多少个32位数组空间,用最大数31计算 self.array=[0 for i in range(self.size)] # 申请空间,一个整数4个字节(32位) print("size", self.size) def bit_index(self,num): # 计算在32位中所处的位置 return num % 31 def num_set(self,num): elemIndex = num // 31 # 计算存储索引位 byteIndex = self.bit_index(num) #计算32位中的索引位,要存储到该位置 element = self.array[elemIndex] # 找到该值 self.array[elemIndex] = element | (1<<byteIndex) # 存储 def find(self,i): elemIndex = i//31 byteIndex = self.bit_index(i) if self.array[elemIndex] & (1<<byteIndex): return True return False #ord()转换成ascii码 #chr()ascii码转成字符串 # bitmap对字符串内的字符排序 MAX=ord('z') suffle_array=[x for x in 'coledraw'] result = [] bitmap = Bitmap(MAX) for c in suffle_array: bitmap.num_set(ord(c)) for i in range(MAX+1): # 从小到大顺序遍历 if bitmap.find(i): result.append(chr(i))
相关文章
- SpringAOP来监控service层中每个方法的执行时间
- 分库分表方法(二)
- python用reduce和map把字符串转为数字的方法
- Swift语法专题十二——方法
- 细说angular Form addControl方法
- C# 泛型编程之泛型类、泛型方法、泛型约束
- iOS 方法查找 cache查找 hash查找
- Android开发 Activity之间传递图片(Bitmap)的方法
- Dataset之GermanCreditData:GermanCreditData数据集的简介、下载、使用方法之详细攻略
- Py之hyperopt:hyperopt库的简介、安装、使用方法之详细攻略
- QML界面切换的几种方法
- LeanCloud SDK 中秒杀70%问题的调试方法
- tomcat 服务器的几个重要监听 方法 与 使用
- css只改变input输入框光标颜色不改变文字颜色实现方法
- android设置中的Preferencescreen使用方法介绍与分析
- html中#include file的使用方法
- python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
- Javascript 创建对象方法的总结