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;