利用Bitmap对整数排序

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("结果不对!")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值