Arrays - ordenando array numerico |
Top Previous Next |
|
// Ordena uma matriz numérica procedure QuickSort(var A: array of Integer; const iLo, iHi: Integer); <-- Não tire os 2 ultimos parametros!! var Lo, Hi, Mid, T: Integer; begin Lo := iLo; Hi := iHi; Mid := A[(Lo + Hi) div 2]; repeat while A[Lo] < Mid do Inc(Lo); while A[Hi] > Mid do Dec(Hi); if Lo <= Hi then begin T := A[Lo]; A[Lo] := A[Hi]; A[Hi] := T; 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;
// exemplo:
procedure TForm1.Button1Click(Sender: TObject); var X: array of Integer; begin Setlength(X, 10); X[0] := 5; X[1] := 100; X[2] := 25; X[3] := 75; X[4] := 0; X[5] := 40; X[6] := 80; X[7] := 22; X[8] := 50; X[9] := 1;
QuickSort(X, Low(X), High(X)); Caption := 'X'; end;
Para impedir repeticao de valores (remover repetidos) veja a dica "Arrays - Removendo valores repetidos" |