我正在寻找一种在传输时按字典顺序存储数据的方法。 由于字典的顺序无关紧要,因此它提供了一个存储可能被忽视的数据的理想位置。
出于这个目的,它是一本字典并不重要,所以我将它建模为一个列表。
我有一个大小为3的列表,其值为A,B,C和D.
我可以存储的理想数据量为log2(n!) where n=4
,为4.58 ...所以4位。
有许多简单方法可以存储可以存储的n-1
位,例如n-1
效率的简单方法:
I have the same list as above, A..D.
I start with the first element
I place the next elements before or after it - each referring to a 1 or a 0.
For example:
000 -> DCBA
001 -> CBAD
010 -> DBAC
100 -> BACD
对此有一些优化会提供一些额外百分比的存储空间,但我想知道(如果可能的话)是否存在接近理论最大值的方法,或者至少提供一个显着的提高这种方法的效率。
对于更多上下文,我希望按HTTP请求头字段的顺序存储数据。
如果可能的话,我正在寻找一种算法,而不是一段代码。
答案 0 :(得分:0)
我通过使用quicksort样式算法来解决这个问题,但是不是将每个元素与数据库进行比较,而是使用“数据源”中的下一位。 由于我正在回答我自己的问题并且对这个问题没什么兴趣,我不会详细介绍,但如果被问到,我很乐意这么做。