class Bitmap(object):
def __init__(self, data, min, max):
self.data = data
self.min = min
self.max = max
self.arr = [0 for i in range((max-min)//32 + 1)]
self.result = []
def setBit(self):
for value in self.data:
index = (value-self.min)//32
bitIndex = (value-self.min)%32
temp = self.arr[index]
self.arr[index] = temp | (1 << bitIndex)
def put(self):
for index, value in enumerate(self.arr):
for i in range(32):
if value & (1<<i):
self.result.append(self.min+32*index+i)
data = [2,4,5,6,23,34,65,76,45,87,64,98,31,32,33,8,9,11,10]
bitmap = Bitmap(data, 1, 100)
bitmap.setBit()
bitmap.put()
print(bitmap.result)
print(sorted(data))
compare = True
if len(bitmap.result) == len(sorted(data)):
for bitmapValue, sortValue in zip(bitmap.result, sorted(data)):
if bitmapValue != sortValue:
compare = False
break
else:
pass
else:
compare = False
if compare:
print("结果正确!")
else:
print("结果不对!")
利用Bitmap对整数排序
最新推荐文章于 2024-04-07 10:30:42 发布