您的位置:首页 > 技术中心 > 其他 >

Python如何实现一个位图索引

时间:2023-05-17 10:16

代码如下:

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 FalseMAX = 879suffle_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如何实现一个位图索引的详细内容,更多请关注Gxl网其它相关文章!

热门排行

今日推荐

热门手游