Let's start out with an example
[1,1,1,5,3,1,1,2,78,2,3,1,1,...,1]
As you can tell by the example, 1 is repeated a lot, but there will be outliers (like 78, and really anything that isn't 1).
The catch to my question is, when I uncompress the numbers, they must retain the original order. The algorithms that I have found generally deal with unique numbers, either sorted or unsorted. I wouldn't mind using one of those, but since my integer list is not unique, I'm wondering if there is anything currently out there that is optimized for this sort of thing.
Quickly thinking, My first idea was to do a normal compression tree and just map in values for patterns.
My second Idea was to just describe repeating numbers like so: 3->1, 1->5, 1->3, 2->1, 1->2, 1->78, 1->2, 1->3, x->1.
Of course this only works if values are constantly repeated, which generally the lower numbers will be repeated a lot, but I can't be 100% positive that that will be the case every time.