terça-feira, 11 de março de 2008

Ordenando Array Dinâmico de Record


Meu Record

TMeuTipo = record
codigo : double;
numero : integer;
nome : String;
Sigla : String;
end;

Ordenando o array de record pelo campo número

procedure TForm1.QuickSort(var A: array of TMeuTipo; const iLo, iHi: Integer);
var
Lo, Hi, Mid : Integer;
lTemp : TMeuTipo;

begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi) div 2].numero;

repeat
while A[Lo].numero < Mid do
Inc(Lo);

while A[Hi].numero > Mid do
Dec(Hi);

if Lo <= Hi then
begin
lTemp := A[Lo];
A[Lo] := A[Hi];
A[Hi] := lTemp;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;

if Hi > iLo then
QuickSort(A, iLo, Hi);

if Lo < iHi then
QuickSort(A, Lo, iHi);
end;

  © Blogger template 'Perfection' by Ourblogtemplates.com 2008

Back to TOP