[Parcial] [Julio] [2010] [Ej1] Solucion alternativa

[Parcial] [Julio] [2010] [Ej1] Solucion alternativa

de Matias Rodal Medina -
Número de respuestas: 0

Hola, queria saber si esta bien esta solucion que se me ocurrio:

PROCEDURE OrdenarPersonas(l:ListaPersonas;ord:Orden):ListaPersonas;
VAR lc,l2:ListaPersonas;
    p1,p2:Persona;
BEGIN
   lc:=CrearListaPersonas();
   IF NOT EsVaciaListaPersonas(l) THEN
      l2:=CopiarListaPersonas(l)
      p1:=ObtenerMenorPersona(l2,ord[0]);
      WHILE NOT EsVaciaListaPersonas(l2) DO
         RemoverPersona(p1,l2);
         p2:=ObtenerMenorPersona(l,ord[0]);
         IF (EsMenor(p1,p2,ord[0])) OR (EsIgual(p1,p2,ord[0])) AND
            (EsMenor(p1,p2,ord[1])) OR (EsIgual(p1,p2,ord[1])) AND
            (EsMenor(p1,p2,ord[2])) OR (EsIgual(p1,p2,ord[2])) THEN
            AgregarPersona(p1,lc);
            p1:=p2;
         ELSE
            AgregarPersona(p2,lc);
         END;
      END;
   END;
      RETURN lc;
END OrdenarPersonas;