http://arstechnica.com/security/2013/05/how-crackers-make-minced-meat-out-of-your-passwords/1/
Everyone should give this a read. Basically, password cracking has gotten at least a little bit beyond brute force. Now it is about educated guessing which involves having sets of words (called dicts) and behavior lists (methodologies people use to make passwords, like capitalize every other letter, or insert the numbers 1 2 3 and 4 between successive letters.) Running a dict against a set of behaviors allows you to crack a signifigant portion of passwords. As for salting, in any instance where you have a large body of passwords, you can safely assume that at least some proportion have a common or obvious password, so to crack the salt, all you are really doing is starting with a very common, short password, and then running the set of all salts on that password to see if you match an md5 hash in the textfile that has all the user hashes. You've now cracked the salt.
Md5 should be looked down on and rightfully so when there are better alternatives out there, especially when the only trade off is a bit more computational power.