One idea for asteroid deflection that may require less energy, but a lot more finesse, than the suggestions already made:
Find a much smaller asteroid whose trajectory takes it relatively close to the one that presents a danger. Deflect that such that it hits it.
Why? Because the second asteroid likely has a high delta v with relation to the danger asteroid. Thus, there's a lot of free energy there, we just have to make use of it. A small course alteration on a small asteroid is less energy intensive than a small course alteration on big one.
Of course, this plan requires a great deal of luck in that there is a small asteroid whose trajectory takes it close enough to our big one to make it feasible. And it also requires that we can make that course alteration with enough accuracy to actually make them hit, which I really doubt at present.
Originally I thought of this as a way to move asteroids around in which you've got plenty of time and can choose your targets from the whole assortment available, rather than this type of emergency scenario. For instance, if you wanted to mine an asteroid, you'd have plenty to choose from, so find one whose trajectory take it close to another fast moving small asteroid, and work on the small one to hit it just right... if you've got a decade or so to wait for their orbits to line up, I suspect this sort of thing could be done.