並び変えは可逆なんだから, 引き算した場所をどうにかして記憶しとけばいいんでしょ.
毎回の引き算した場所のインデックスをヘッダに0区切りで覚えておくとかは?
あと、大抵の可逆圧縮は値が近いだけではダメで同じでないと圧縮できないので、
そんなに圧縮率は期待できないのでは? まぁ数値が近ければ同じ値になる確立も
上がるだろうけど。
それなら文字列よりも画像とか、連続的なデータで不可逆でもいいやつの方が効くんじゃないのかな。
DCTとか。