I've always thought about this, and to me, a very simple (though slightly inaccurate) solution would be to sort using this formula:
(TotalScore - 1) / MaxPossibleScore
Such that (using the Amazon examples from the article):
((2 * 5) - 1) / 10 = 9/10 = 90%
((100 * 5) + (1 * 1) - 1) / 505 = 500/505 = 99%