Class TM3Array (unit mwFixedRecSort) |
Inherits from
TObject
TSub3Array } { TM3Array class
function Add(Item: Pointer): Integer;
procedure Clear;
destructor Destroy;
Destroy } { TM3Array
function Last: Pointer;
procedure MergeSort(SorCompare: TMergeCompare);
Merge } {Non-recursive Mergesort.
procedure QuickSort(SorCompare: TMergeCompare);
Based on a non-recursive QuickSort from the SWAG-Archive.
function Get(Index: Integer): Pointer;
procedure Merge(SorCompare: TMergeCompare);
QuickSort } {This is a three way merge routine.
procedure Put(Index: Integer; Item: Pointer);
procedure Expand;
procedure SetCapacity(NewCapacity:Integer);
property Capacity : Integer
property Count : Integer
property Items : Pointer
property M3Array : PMergeArray
fCapacity : Integer;
FCount : Integer;
FLeftArray : TSub3Array;
FM3Array : PMergeArray;
FMidArray : TSub3Array;
FRightArray : TSub3Array;
SwapArray : PMergeArray;
TempArray : PMergeArray;
function Add(Item: Pointer): Integer;
procedure Clear;
destructor Destroy;
Destroy } { TM3Array
function Last: Pointer;
procedure MergeSort(SorCompare: TMergeCompare);
Merge } {Non-recursive Mergesort.
Very fast, if enough memory available.
The number of comparisions used is nearly optimal, about 3/4 of QuickSort.
If comparision plays a very more important role than exchangement,
it outperforms QuickSort in any case.
( Large keys in pointer arrays, for example text with few short lines. )
From all Algoritms with O(N lg N) it's the only stable, meaning it lefts
equal keys in the order of input. This may be important in some cases.
procedure QuickSort(SorCompare: TMergeCompare);
Based on a non-recursive QuickSort from the SWAG-Archive.
( TV Sorting Unit by Brad Williams )
function Get(Index: Integer): Pointer;
procedure Merge(SorCompare: TMergeCompare);
QuickSort } {This is a three way merge routine.
Unfortunately the " Merge " routine needs additional memory
procedure Put(Index: Integer; Item: Pointer);
procedure Expand;
procedure SetCapacity(NewCapacity:Integer);
property Capacity : Integer
property Count : Integer
property Items : Pointer
property M3Array : PMergeArray
fCapacity : Integer;
FCount : Integer;
FLeftArray : TSub3Array;
FM3Array : PMergeArray;
FMidArray : TSub3Array;
FRightArray : TSub3Array;
SwapArray : PMergeArray;
TempArray : PMergeArray;