用bitmap来解决电话号码存储问题

不到一亿个()8位电话号码,在一台内存有限(100M)的机器上排序,时间要求也比较有限
可以使用bitmap来解决这个问题,开一个数组元素空间占用为1bit的,默认值为0的数组(具体语言实现可能不是数组?bitset or bitarray or something),遍历所有电话号码,对每个电话号码所对应的数组元素赋值1
然后从头遍历数组,输出所有元素是1的就可以了
bitmap是一种是一种指示存在或不存在的非常省内存的方案,我觉得用来对付这种顺序的数据很有效
空间复杂度是O(1),即只需要一定的空间,时间复杂度是O(n),只需要遍历两次数据。这会大大节省内存和提高效率
不过,这个方法也有一些限制。它只适用于整数,并且只能用于非负整数。如果数据中包含重复的电话号码,这个方法无法记录重复的次数。如果需要记录重复的次数,那么可能需要使用其他的数据结构,比如哈希表或者计数排序。