Personally, i prefer to be closer to the cruise (so in your case, i'd prefer to stay in Ft. Lauderdale, unless my MIA flight gets in VERY late)... just makes for fewer potential problems.
Best (read: cheapest) bet is to use Priceline or Hotwire. You can check out the website below, which explains each, gives lots of tips, and shows you how you can pretty much figure out how to get the property you're looking for (look in FLORIDA>> Hotel List and Tips>> Info for cruisers):
www.BetterBidding.com
Examples of some deals are the Miami Downtown Hyatt for $27/nite, and in Ft. Lauderdale the Embassy Suites are often had for between $55-85.