1. A hardware data compressor, comprising: a first hardware engine that scans an input block of characters and uses a plurality of lists of nodes to produce back pointers to matching strings in the input block to compress the input block; each node points to a character in the input block previously scanned and has an associated probability that a back pointer to a matching string that begins with the pointed-to character will be produced by the first hardware engine; and a second hardware engine that, for each list of nodes of the plurality of lists, sorts the list according to the probabilities of the nodes in the list so that higher probability nodes appear earlier in the list for use by the first hardware engine to search for matching strings during the scan of the input block of characters.