Перебор массива по сравнению с предыдущими найденными минимальными и максимальными значениями.
Вот фрагмент кода.После вашего разъяснения я отредактировал код для использования Int64.
Min := High(Int64);
Max := Low(Int64);
for ThisNumber in MyArray do
begin
if ThisNumber < Min then
begin
Min := ThisNumber;
end
if ThisNumber > Max then
begin
Max := ThisNumber;
end;
end;
Интересно отметить, что MaxIntValue в Math.pas реализован следующим образом:
function MaxIntValue(const Data: array of Integer): Integer;
var
I: Integer;
begin
Result := Data[Low(Data)];
for I := Low(Data) + 1 to High(Data) do
if Result < Data[I] then
Result := Data[I];
end;
Эта реализация, подобно ответу Дэвида, использует первое значение массива в качестве начального значения.Это предполагает, что в массиве есть хотя бы один элемент.Также обратите внимание, что цикл может начинаться с Low (Data) + 1 и сохранять одно ненужное сравнение.Для данных, которые вы описали, со 100 элементами в каждом массиве вы получите улучшение скорости на 1%, в лучшем случае.
Если производительность не имеет значения, то MinIntValue и MaxIntValue будут более краткими.Если вы катите свой собственный, то вы будете перебирать массив только один раз, а не дважды.