Heim > Backend-Entwicklung > Python-Tutorial > So implementieren Sie einen Bitmap-Index in Python

So implementieren Sie einen Bitmap-Index in Python

PHPz
Freigeben: 2023-05-16 21:49:10
nach vorne
1026 Leute haben es durchsucht

Der Code lautet wie folgt:

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)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen Bitmap-Index in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage