Donat un vector de reals , fes un procediment amb la següent capçalera:
vector<double> permutacio (vector<double>& p)
que calculi una permutació del vector . Cal fer-ho de la següent manera:
Calcularem un nombre aleatori amb la funció . Aquest nombre ha d’estar entre i , on és la mida de . Sigui .
Intercanviem l’element amb l’element .
Procedim a fer el mateix que en el primer pas, però ara limitem més el nombre aleatori, que ha d’estar entre i , i intercanviarem l’element que doni la funció amb l’element .
Farem això mentre hi hagi elements a intercanviar.
Cal escriure només la funció. El programa principal serà ignorat. Assumiu que en el programa principal s’ha iniciat la funció amb paràmetre .
La funció tindrà com a paràmetres un vector de reals: .
Una permutació d’.
Input
9 1 2 3 4 5 6 7 8 9
Output
4 5 1 3 2 9 6 8 7
Input
2 1 2
Output
2 1
Input
22 50 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Output
20 5 15 19 2 1 13 10 18 16 12 9 17 4 11 50 6 8 14 20 3 7