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
R'DR'D2F'R2FD2R2 (9) |
code: a02
F'D2L'FLD2F (7) |
code: a05
F'D2L'F'LD2F (7) |
code: a11
F2D2F'D'FD'F'D2F' (9) |
code: a11x
R2B'D'BDRD'R (8) |

code: a15
FD'F2RFR' (6) |
code: a15x
D'FD'F'R'D'R (7) |
code: a21
R2D2RDR'DRD2R (9) |
code: a21x
F2LDL'D'F'DF' (8) |
code: a22
R'DR2F'R'F (6) |

code: a22x
DR'DRFDF' (7) |
code: b01
DFD2LD2L'F' (7) |
code: b01x
DR'D'RD'FDF' (8) |
code: b02
D'R'DR (4) |
code: b02x
F'D2F2DF2DF (7) |

code: b03
F2LDL'D'F2 (6) |
code: b03x
R2D'B'DBR2 (6) |
code: b04 FDF' (3) |
code: b04x
R'D'B'D2BD'R (7) |
code: b05
D'FD'F'DFDF' (8) |

code: b05x
R'B'L'DLBR (7) |
code: b11
L'ULD'L'U'L (7) |
code: b11x
D'FDF'DR'D'R (8) |
code: b12
DR'DRD'R'D'R (8) |
code: b12x
R'DRD2FDF' (7) |

code: b13 R'D'R (3) |
code: b13x
R2D2F'R2FD2R2 (7) |
code: b14
R2B'D'BDR2 (6) |
code: b14x
F2DLD'L'F2 (6) |
code: b15
DFD'F' (4) |

code: b15x
RD2R2D'R2D'R' (7) |
code: b21
R2D'R2D'R2D2R2 (7) |
code: b21x
R'DRFD2F' (6) |
code: b22 R'D2RDR'D'R (7) |
code: b22x
D2F2D2F'D'FD'F2 (8) |

code: b23
D'R'D2R2F'R'F (7) |
code: b23x
FLD2L'F' (5) |
code: b24
DFD2F2RFR' (7) |
code: b24x
R'B'D2BR (5) |
code: b25 FD2F'D'FDF' (7) |

code: b25x
R'D'R'BRB'D2R (8) |