MinMax<T> class method

Project: Array Utilities Unit

Unit: DelphiDabbler.Lib.ArrayUtils

Record: TArrayUtils

Applies to: ~>0.1

class procedure MinMax<T>(const A: array of T;
  const AComparer: TComparison<T>; out AMinValue, AMaxValue: T);
  overload; static;

class procedure MinMax<T>(const A: array of T;
  AComparer: IComparer<T>; out AMinValue, AMaxValue: T);
  overload; static;

class procedure MinMax<T>(const A: array of T; out AMinValue, AMaxValue: T);
  overload; static;

Description

Finds the minimum and maximum values of a non empty array.

Parameters:

Precondition:

Examples

Example #1

Using an equality comparer function:

procedure MinMax_Eg1;
var
  A: TArray<Integer>;
  MinVal, MaxVal: Integer;
  ComparerFn: TComparison<Integer>;
begin
  A := TArray<Integer>.Create(1, 2, 3, 4, 2, 3, 2);
  ComparerFn := function(const Left, Right: Integer): Integer
    begin
      Result := Left - Right;
    end;
  TArrayUtils.MinMax<Integer>(A, ComparerFn, MinVal, MaxVal);
  Assert(MinVal = 1);
  Assert(MaxVal = 4);
end;

Example #2

Using an equality comparer object:

procedure MinMax_Eg2;
var
  A: TArray<string>;
  MinVal, MaxVal: string;
  ComparerObj: IComparer<string>;
begin
  A := TArray<string>.Create('a', 'b', 'c', 'd', 'c', 'a');
  ComparerObj := TDelegatedComparer<string>.Create(CompareStr);
  TArrayUtils.MinMax<string>(A, ComparerObj, MinVal, MaxVal);
  Assert(MinVal = 'a');
  Assert(MaxVal = 'd');
end;

See Also