We stayed at the San Pedro Hilton through Priceline for $40. They offered complimentary shuttle to/from the cruise terminal. If we had it to do over again, we'd stay in Long Beach. Sure, it's a little further, and probably a necessary cab ride to/from the ship, but there's more to do in Long Beach. San Pedro is more of an industrial port town, where Long Beach is better suited to tourists.
Long Beach offers some good 4* hotels on Priceline. Westin and Renaissance that come to mind. You can generally always get them for $100 or less.
If you want to remain closer to the ship in San Pedro, the Sheraton is very close. I've seen people report some decent package deals at the Sheraton.