如何获得动态整数数组的最小值和最大值?

时间:2013-08-27 12:31:34

标签: delphi delphi-7 dynamic-arrays

如何找出由array of Integer定义的特定动态数组的最小值和最大值?

例如:

Y: array of integer;

4 个答案:

答案 0 :(得分:17)

最简单的方法是使用执行此服务的内置函数。它们被称为MinIntValueMaxIntValue,可以在数学单元中找到。

uses
  Math;
....
TheMin := MinIntValue(TheArray);
TheMax := MaxIntValue(TheArray);

答案 1 :(得分:10)

在Math:

单元中有重载函数
function MinValue(const Data: array of Single): Single; overload;
function MinValue(const Data: array of Double): Double; overload;
function MinValue(const Data: array of Extended): Extended; overload;
function MinIntValue(const Data: array of Integer): Integer;

function MaxValue(const Data: array of Single): Single; overload;
function MaxValue(const Data: array of Double): Double; overload;
function MaxValue(const Data: array of Extended): Extended; overload;
function MaxIntValue(const Data: array of Integer): Integer;

因为你使用的是整数,所以你应该使用MinIntValue和MaxIntValue

答案 2 :(得分:5)

您必须遍历数组,寻找所需的值,例如:

function TMyClass.GetMinValue: Integer;
var
  Idx: Integer;
begin
  Result := MyArray[Low(MyArray)];
  for Idx := Low(MyArray)+1 to High(MyArray) do
  begin
    if MyArray[Idx] < Result then
      Result := MyArray[Idx];
  end;
end;

function TMyClass.GetMaxValue: Integer;
var
  Idx: Integer;
begin
  Result := MyArray[Low(MyArray)];
  for Idx := Low(MyArray)+1 to High(MyArray) do
  begin
    if MyArray[Idx] > Result then
      Result := MyArray[Idx];
  end;
end;

答案 3 :(得分:3)

可以在一个循环中完成......

function ArrayValRange( somearray: array of integer; var minval: integer; var maxval: integer): boolean;
var
   i: integer;
begin
  result := false;
  if length( somearray) < 1 then
      exit;
  result := true;

  maxval = somearray[ Low(somearray)];
  minval = maxval;

  for i := Low(somearray)+1 to High(somearray) do
  begin
    if somearray[i] > maxval then
      maxval := somearray[i];

    if somearray[i] < minval then
      minval := somearray[i];

  end;
end;

然后

if ArrayValRange( myarray, min, max) then
begin
   //do your thing
end;