Sorting an array of integers
From: Bob Richardson (bobrNO_at_SPAMhidbey.com)
Date: 03/22/04
- Next message: Rob Kennedy: "Re: Sorting an array of integers"
- Previous message: David Reeve: "Re: Is it possible to Link BCB .obj files to a single delphi .dcu file?"
- Next in thread: Rob Kennedy: "Re: Sorting an array of integers"
- Reply: Rob Kennedy: "Re: Sorting an array of integers"
- Reply: J French: "Re: Sorting an array of integers"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 21 Mar 2004 22:25:26 -0800
I'd like to be able to have a generic procedure to sort an array of
integers - ideally:
ArraySort(MyArray,Max); for ascending, and
ArraySort(MyArray,Max,false); for descending.
When I trace to this procedure, my "watch list" looks good, with the correct
results in
tArray(P^)[i]
However, I get an exception error when I try to look at the above item.
Here's where I am:
Type
tMyCompare = Function(Const Item1, Item2:Integer):Boolean;
tArray = array[0..10000] of integer;
procedure ArraySort(P : pointer; const Max: Integer; Up : boolean = true);
implementation
procedure ArraySort(P : pointer; const Max: Integer; Up : boolean = true);
var M,N, Gap: Integer; Compare : tMyCompare;
function Ascend(const Item1, Item2: Integer): Boolean;
begin
Result := tArray(P^)[Item1] > tArray(P^)[Item2];
end; {MyIsGreater}
function Descend(const Item1, Item2: Integer): Boolean;
begin
Result := tArray(P^)[Item1] < tArray(P^)[Item2];
end; {MyIsGreater}
procedure MySwap(const Item1, Item2: Integer);
var Hold: Integer;
begin
Hold := tArray(P^)[Item2];
tArray(P^)[Item2] := tArray(P^)[Item1];
tArray(P^)[Item1] := Hold;
end; {MySwap }
begin
Gap := (Max - 1) div 2 + 1;
if Up then
Compare := @Ascend
else
Compare := @Descend;
while Gap > 0 do
begin
for M := 0 to Max - Gap do
begin
N := M;
while N >= 0 do
begin
if Compare(N, N + Gap) then
MySwap(N, N + Gap)
else
N := -1;
N := N - Gap;
end; {While}
end; {For}
Gap := Gap div 2;
end; {While}
end; {ArraySort}
- Next message: Rob Kennedy: "Re: Sorting an array of integers"
- Previous message: David Reeve: "Re: Is it possible to Link BCB .obj files to a single delphi .dcu file?"
- Next in thread: Rob Kennedy: "Re: Sorting an array of integers"
- Reply: Rob Kennedy: "Re: Sorting an array of integers"
- Reply: J French: "Re: Sorting an array of integers"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]