Optimized public-domain implementation of a Java alphanumeric sort.
This implementation uses a single comparison pass over the characters in a
CharSequence, and returns as soon as a differing character is found, unless
the difference occurs in a series of numeric characters, in which case that
series is followed to its end. Numeric series of equal length are compared
numerically, that is, according to the most significant (leftmost) differing
digit. Series of unequal length are compared by their length.
This implementation appears to be 2-5 times faster than alphanumeric
comparators based based on substring analysis, with a lighter memory
footprint.
This alphanumeric comparator has approximately 20%-50% the performance of the
lexical String.compareTo() operation. Character sequences without numeric
data are compared more quickly.
Dedicated to the public domain by the original author:
http://creativecommons.org/licenses/publicdomain/