I use an algorithm where recent votes and posts has more weight:
(votes from the last two hours times 1) + (votes from the next two hours times 0.75)... and so on. Do the same for posts. Because it's expensive to calulate these values, I have a cron job that updates the scores every fifteen minutes.