子阵列的最大值

时间:2014-11-10 10:20:25

标签: max pascal freepascal arrays

是否有任何函数从longint数组的子数组返回最大数字?

例如:

我有阵列:[2,3,6,2,9,4,2,4]

我想要数组(9)的前5个元素[2,3,6,2,9]的最大值

哪种解决方案最好?

2 个答案:

答案 0 :(得分:5)

您不需要创建另一个阵列。 第一个解决方案是在数组中循环,将第一个值作为' tempMaxValue',然后获取数组,将每个值与'tempMaxValue'进行比较。

如果该值大于' tempMaxValue',请更新' tempMaxValue'使用该特定值,然后跳转到数组中的下一个值,否则只需跳转到下一个值。

使用此解决方案,您可以管理要搜索的项目数(此处您希望5个第一个元素中的最大数字,因此您的循环将从0到4)

编辑:(正如@TLama所说)

答案 1 :(得分:0)

更具体地说,这是一个简单的解决方案:编写一个函数,它接受一个数组,最低和最高的索引作为参数。

program Project1;

uses sysutils;

type TIntegerArray = array of Integer;

function maxInRange(const anArr: TIntegerArray; boundLow, boundHi: Integer): Integer;
var
  i: Integer;
begin
  result := anArr[boundLow];
  for i := boundLow + 1 to boundHi do
    if anArr[i] > result then
      result := anArr[i];
end;

const
  arr: array[0..7] of Integer = (2,3,6,2,9,4,2,4);

begin
  writeln(intToStr(maxInRange(arr,0,4)));
  readln;
end.