Permutação em ordem decrescente

bem e o seguinte … eu fui proposto a realizar um programa … porem agora travei em uma função e n to conseguindo ter ideia nenhuma de como realizar …
o problema e o seguinte … :
eu tenho uma fila em ordem decrescente … bem eu preciso permutar os valores dessa fila de forma que os numeros sejam sempre o maior possivel tipo assim … obs : cada no da fila contem um numero
primeiro node 4 -> segundo node 3 -> terceiro node 2 … e assim por diante .
primeiro numero era 4321
dai o proximo numero permutado e 4312 , o proximo tem de ser 4231 , e o seguinte 4213 , dps 4132,4123e assim por diante … alguem poderia me da uma ajuda … ??
desde ja agradeço …
desculpe o incomodo …

http://www.nebraskaroads.com/csce235/section4_7.html dá um algoritmo para a ordem crescente, se você for esperto suficiente vai conseguir mudar o algoritmo para que fique em ordem crescente.

Query feita no Google: generate permutations ascending order

Por que é que não procurei pela ordem decrescente (descending order)? É que achei que provavelmente não iria achar, já que o problema normalmente é solicitado com a ordem crescente.

muito obrigado … foi de grande ajuda …