Python 官方文档:入门教程 => 点击学习
python中怎么实现一个位图索引,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。class Bitmap(object):def __ini
python中怎么实现一个位图索引,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
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 / 31def calcBitIndex(self, num):return num % 31def 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 Truereturn 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频道,感谢您对编程网的支持。
--结束END--
本文标题: Python中怎么实现一个位图索引
本文链接: https://www.lsjlt.com/news/230020.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0