BEPAI
13-09-2015, 11:29:05
Poner la ordenación de forma descendente este algoritmo, o quizás mejor, elegir la más conveniente.
Globales>> iLo, iHi: Integer
PROCEDURE QUICKSORT(var A: array of Integer; iLo, iHi: Integer) ;
var
Lo, Hi, Pivot, T: Integer;
Begin
Lo := iLo;
Hi := iHi;
Pivot := A[(Lo + Hi) div 2];
REPEAT
while A[Lo] < Pivot do Inc(Lo) ;
while A[Hi] > Pivot 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;
Usage:
Var
intArray : array of integer;
begin
SetLength(intArray,10) ;
//Add values to intArray
intArray[0] := 2007;
...
intArray[9] := 1973;
//sort
QuickSort(intArray, Low(intArray), High(intArray)) ;
Cómo hacer esto y si se puede mejorar.
Gracias.
Globales>> iLo, iHi: Integer
PROCEDURE QUICKSORT(var A: array of Integer; iLo, iHi: Integer) ;
var
Lo, Hi, Pivot, T: Integer;
Begin
Lo := iLo;
Hi := iHi;
Pivot := A[(Lo + Hi) div 2];
REPEAT
while A[Lo] < Pivot do Inc(Lo) ;
while A[Hi] > Pivot 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;
Usage:
Var
intArray : array of integer;
begin
SetLength(intArray,10) ;
//Add values to intArray
intArray[0] := 2007;
...
intArray[9] := 1973;
//sort
QuickSort(intArray, Low(intArray), High(intArray)) ;
Cómo hacer esto y si se puede mejorar.
Gracias.