  Two completely new algorithms for generating permutations, shift-cursor
algorithm and level algorithm, and their efficient implementations are
presented in this paper. One implementation of the shift cursor algorithm gives
an optimal solution of the permutation generation problem, and one
implementation of the level algorithm can be used to generate random
permutations.
