如何压缩一定范围内的随机正整数数组?

时间:2019-04-01 17:16:21

标签: algorithm integer compression

我想压缩一个由大约10 ^ 5个随机整数组成的数组,范围为0到2 ^ 15。整数未排序,我需要对其进行无损压缩。

我不太在乎运行算法所需的计算量和时间,只是想拥有更好的压缩率。

有没有建议的算法?

1 个答案:

答案 0 :(得分:1)

假设您无需保留原始顺序,而无需自己传递数字,而可以传递计数。如果它们具有正态分布,则可以期望每个数字重复3或4次。每个数字3位,最多可以计数7个。您可以制作2 ^ 15 * 3位的数组,每3位设置该数字的计数。要处理超过7个的极端情况,我们还可以发送这些情况的编号列表及其计数。然后,您可以读取3位数组,并使用计数大于7的附加信息覆盖。