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
U'RU'R2F'U2FR2U2 (9) |
code: a02
F'R2D'FDR2F (7) |
code: a05
F'R2D'F'DR2F (7) |
code: a11
F2R2F'R'FR'F'R2F' (9) |
code: a11x
U2B'R'BRUR'U (8) |

code: a15
FR'F2UFU' (6) |
code: a15x
R'FR'F'U'R'U (7) |
code: a21
U2R2URU'RUR2U (9) |
code: a21x
F2DRD'R'F'RF' (8) |
code: a22
U'RU2F'U'F (6) |

code: a22x
RU'RUFRF' (7) |
code: b01
RFR2DR2D'F' (7) |
code: b01x
RU'R'UR'FRF' (8) |
code: b02
R'U'RU (4) |
code: b02x
F'R2F2RF2RF (7) |

code: b03
F2DRD'R'F2 (6) |
code: b03x
U2R'B'RBU2 (6) |
code: b04 FRF' (3) |
code: b04x
U'R'B'R2BR'U (7) |
code: b05
R'FR'F'RFRF' (8) |

code: b05x
U'B'D'RDBU (7) |
code: b11
D'LDR'D'L'D (7) |
code: b11x
R'FRF'RU'R'U (8) |
code: b12
RU'RUR'U'R'U (8) |
code: b12x
U'RUR2FRF' (7) |

code: b13 U'R'U (3) |
code: b13x
U2R2F'U2FR2U2 (7) |
code: b14
U2B'R'BRU2 (6) |
code: b14x
F2RDR'D'F2 (6) |
code: b15
RFR'F' (4) |

code: b15x
UR2U2R'U2R'U' (7) |
code: b21
U2R'U2R'U2R2U2 (7) |
code: b21x
U'RUFR2F' (6) |
code: b22 U'R2URU'R'U (7) |
code: b22x
R2F2R2F'R'FR'F2 (8) |

code: b23
R'U'R2U2F'U'F (7) |
code: b23x
FDR2D'F' (5) |
code: b24
RFR2F2UFU' (7) |
code: b24x
U'B'R2BU (5) |
code: b25 FR2F'R'FRF' (7) |

code: b25x
U'R'U'BUB'R2U (8) |