It works like this: find a corner of the first layer, and find the edge of the second layer that belongs to this corner. Now look in the table below for the correct position and orientation of this corner and edge. You might need to turn the top layer to get a situation from the table.

Below the picture you can find the algorithms that put the corner and edge into their positions and orient them.

I found these algorithms using my CubeSolver applet.

These are definitely the shortest algorithms for the situations. If there are more than ten solutions with the same number of moves, only the most common ones are provided.

I am working on the algorithms for the cases where another corner of the first layer is still free. This could give even shorter algorithms, because then you have more sides to turn without breaking up what has already been solved.

I also have a printable version of these algorithms. It is only one page, and shows the two most common algorithms per situation.

code: a01x
R2U2FR2F'U2R'UR' (9) |
code: a02
URUR'U'F'U'F (8) |
code: a05
U'F'U'FURUR' (8) |
code: a11
R2U2R'U'RU'R'U2R' (9) |
code: a11x
F'L'U2LFRUR' (8) |

code: a15
RU'R'URU'R' (7) |
code: a15x
UF'U'FUF'U'F (8) |
code: a21
F2U2FUF'UFU2F (9) |
code: a21x
RU'R'F'L'U2LF (8) |
code: a22
F'UFU'F'UF (7) |

code: a22x
U'RUR'U'RUR' (8) |
code: b01
UF'UFUF'U2F (8) |
code: b01x
UF'U'FU'RUR' (8) |
code: b02
U'F'UF (4) |
code: b02x
R'U2R2UR2UR (7) |

code: b03
R2BUB'U'R2 (6) |
code: b03x
U'RUR'URUR' (8) |
code: b04 RUR' (3) |
code: b04x
F'U'L'U2LU'F (7) |
code: b05
U'RU'R'URUR' (8) |

code: b05x
F'L'B'UBLF (7) |
code: b11
B'DBU'B'D'B (7) |
code: b11x
U'RUR'UF'U'F (8) |
code: b12
UF'UFU'F'U'F (8) |
code: b12x
F'UFU2RUR' (7) |

code: b13 F'U'F (3) |
code: b13x
F2U2R'F2RU2F2 (7) |
code: b14
F2L'U'LUF2 (6) |
code: b14x
R2UBU'B'R2 (6) |
code: b15
URU'R' (4) |

code: b15x
FU2F2U'F2U'F' (7) |
code: b21
RUR'U'RUR'U'RUR' (11) |
code: b21x
F'UFRU2R' (6) |
code: b22 F'U2FUF'U'F (7) |
code: b22x
U2R2U2R'U'RU'R2 (8) |

code: b23
U'F'U2FU'F'UF (8) |
code: b23x
U2RUR'URU'R' (8) |
code: b24
URU2R'URU'R' (7) |
code: b24x
U2F'U'FU'F'UF (8) |
code: b25 RU2R'U'RUR' (7) |

code: b25x
F'U'F'LFL'U2F (8) |