I have a table in which some values are repeated often as shown in the figure below. I want to encode that table such that it makes use of less memory. I have heard about run length encoding (RLE) but I would like to know if there are any other such encoding techniques or algorithms which can perform better than RLE or their performance is almost equivalent to RLE.
There are many general-purpose compression algorithms, for example Lempel-Ziv and its many variants (used for example by
gzip), and Burrows-Wheeler (used for example by
bzip2). You can just try them on your input and see how well they perform. If your data has particular structure, then it is possible that a dedicated compression algorithm would perform significantly better, but it's hard to tell without knowing more about the structure.
For particular, known, and fixed data, there exist any number of custom encoding schemes (In practice, almost certainly specifically designed by the user for this purpose) to optimally represent those data under the encoding scheme. For instance, any encoding scheme for which
your-table => 1
1 is an unambiguous encoding would improve over a standard RLE of your data.