Welcome to the new DelphiDabbler Code Library Documentation.

This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.

Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.

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