Delphi - Ordenar datos array dinámico

 
Vista:

Ordenar datos array dinámico

Publicado por Pascual (12 intervenciones) el 12/11/2006 13:19:01
¿Cómo ordenais los datos de un array dinámico?. He probado a hacer esto pero me da mal el resultado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure   cLista.Ordenar_lista (VAR Lista: cLista);
var
 i,j: integer;
 aux: cResultado;
 ordenado: boolean;
begin
 repeat
  ordenado:= true;
  for j:=0 to Lista.Longitud-1 do
   begin
    IF Lista.Objetos[j].clave < Lista.Objetos[j+1].clave THEN
     BEGIN
      aux := cResultado.Create;
      aux := Lista.Objetos[j];
      Lista.Objetos[j] := Lista.Objetos[j+1];
      Lista.Objetos[j+1] := aux;
      Ordenado := False;
     END;
     i:=i+1;
   end;
  Until Ordenado Or ( i > (Lista.Longitud-1) )
end;

Hago esto pero no me lo ordena bien. Esta es la traza que hace:

Supongamos que tenemos este vector --> (1,2,3) entonces lo queremos ordenar
1<2 --> 2 1 3
1<3 --> 2 3 1 Hasta aquí va bien la cosa.
1<3 --> 2 3 3 Esto ya lo hace mal deberúa de ser 2<3 --> 3 2 1

No se por qué no me lo ordena bien, ¿alguna idea?. Me estoy volviendo loco. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder