Of course if the list get really long (> a few k), you'd keep the current max value in a shift register:

I stored the array index instead of the string, just to show it's possible. You can mix the ideas, for instance use the index and the sort, or use the string with the shift register...
You could keep the NumericRange and index in two shift registers, instead of a cluster in one shift register. This is especially useful if you only care about the max or the index, not both.