[City], [State] [Zip]
The state (and often even the city; there are free datasets for this though they're not perfectly reliable and more expensive) can be inferred from the zipcode, so it seems logical that we ought to prompt first for the zip and then help users along by filling the state on their behalf. I suspect his is not done because people are so used to the City -> State -> Zip pattern, asking them to fill the zip first just breaks their expected flow; a "surprise" that makes them think.
I used to work on a case management system for legal aid attorneys that did these lookups and we had to explicitly train them to enter the zip code first (changing field order or tab order didn't help) -- otherwise, they'd never have used it; and some of them still refused to use it, but those who did appreciated the time savings.
It's also interesting to think about text input versus dropdown select if you decide to go for manual state entry. I prefer just typing in the abbreviation, but I'm not sure that's suitable for a wide audience.
I'm not sure many people actually know their full 9 digit zip. Certainly not many of my customers have bothered entering it.