Tu crées un tableau a 16 cases. Chaque case est initialisée a 0 sauf la 16e a -1 (tes valeurs a ranger sont entre 1 et 15)
Au depart, ta case courante est la premiere.
Au depart i vaut 15.
On a un algo en boucle decroissante:
Pour mettre la valeur i dans une case, tu procedes ainsi:
Tu recuperes une valeur aléatoire: int rand(void) (ou autre generateur d'entier aleatoire). Tu recuperes le reste r de la division valeur aleatoire par i, et tu avances de r+1 cases inoccupées (test si le contenu est a 0. S'il est a -1, tu reviens a la premiere case).
Tu ranges la valeur i dans la case.
Tu decrementes i. s'il est a 0, c'est fini, sinon on repart pour un tour de boucle.
Bon, c'est le premier truc qui m'est passe par la tete, il y a sans doute moyen d'optimiser.
A+,