首页 > 后端开发 > Python教程 > Python如何实现一个位图索引

Python如何实现一个位图索引

PHPz
发布: 2023-05-16 21:49:10
转载
1024 人浏览过

代码如下:

class Bitmap(object):
	def __init__(self, max):
		self.size  = self.calcElemIndex(max, True)
		self.array = [0 for i in range(self.size)]
	def calcElemIndex(self, num, up=False):
		'''up为True则为向上取整, 否则为向下取整'''
		if up:
			return int((num + 31 ) / 31) #向上取整
		return num / 31
		
	def calcBitIndex(self, num):
		return num % 31
		
	def set(self, num):
		elemIndex = int(self.calcElemIndex(num))
		byteIndex = self.calcBitIndex(num)
		elem      = self.array[elemIndex]
		self.array[elemIndex] = elem | (1 << byteIndex)	
		
	def clean(self, i):
		elemIndex = int(self.calcElemIndex(i))
		byteIndex = self.calcBitIndex(i)
		elem      = self.array[elemIndex]
		self.array[elemIndex] = elem & (~(1 << byteIndex))
	def test(self, i):
		elemIndex =int(self.calcElemIndex(i))
		byteIndex = self.calcBitIndex(i)
		if self.array[elemIndex] & (1 << byteIndex):
			return True
		return False
MAX = 879
suffle_array = [45, 2, 78, 35, 67, 90, 879, 0, 340, 123, 46]
result       = []
bitmap = Bitmap(MAX)
for num in suffle_array:
	bitmap.set(num)
for i in range(MAX + 1):
	if bitmap.test(i):
		result.append(i)
print ('原始数组为:    %s' % suffle_array)
print ('排序后的数组为: %s' % result)
登录后复制

以上是Python如何实现一个位图索引的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:yisu.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板