L’algorisme d’ordenació per selecció consisteix en, de forma iterativa, trobar l’element mínim de la part no ordenada i col·locar-lo al principi d’aquesta part. Concretament:
Es busca l’element mínim del rang [begin, end) i
s’intercanvia amb l’element apuntat per begin.
Seguidament, es busca el mínim del rang que va des del següent a
begin fins a end, i s’intercanvia amb el segon
element.
Es repeteix fins que queda un sol element per processar.
Fes una funció amb la capçalera
/**
* @brief Ordena un rang d'una llista usant selecció.
*
* @param begin Iterador al principi del rang.
* @param end Iterador al final del rang (no inclòs).
* @pre begin i end delimiten un rang vàlid d'una llista.
* @post El rang [begin, end) queda ordenat ascendentment.
*/
void ordenacio_seleccio(list<int>::iterator begin,
list<int>::iterator end);
que ordeni el rang [begin, end) d’una llista d’enters
usant l’algorisme d’ordenació per selecció.
Per exemple, si la llista conté 5 3 1 4 2, després de
cridar la funció la llista ha de contenir 1 2 3 4 5.
L’entrada consisteix en una seqüència d’enters separats per espais, que es llegeix fins al final de l’entrada.
La sortida és una línia amb els elements de la llista ordenada ascendentment, separats per espais.
Als fitxers públics (icona del gatet) trobaràs: main.cc
(el programa principal, amb l’entrada/sortida feta),
ordenacio.cc (a on has d’implementar la funció) i un
Makefile.
Has d’implementar ordenacio_seleccio al fitxer
ordenacio.cc i enviar només aquest
fitxer.
Input
5 3 1 4 2
Output
1 2 3 4 5
Input
1 2 3 4 5
Output
1 2 3 4 5
Input
5 4 3 2 1
Output
1 2 3 4 5