Встретился с проблемкой одной... Нужно определить минимальное значение элементов дико огромного массива (порядка 1 млн элементов

).
Простецкая функция нижеуказанного вида работает только для 100тыщ элементов, а для 1млн выдает ошибку о переполнении стэка.
Код:
1 2 3 4 5 6 7 8 9 10 11 | function _Find_Min(_data: array of integer ): integer ;
var
_i, _value : integer ;
begin
_value := _data[ 0 ];
for _i := 1 to Length(_data)- 1 do
_value := min(_value, _data[_i]);
_Find_Min := _value;
end ;
|
Вижу несколько вариантов решения:
1. в динамическую память запихать этот массив (слышал краем уха про это где-то);
2. рекурсивно как-нибудь задать функцию чтоб она била массив напополам и от половинок минимум искала в самой себе (но с точки зрения кол-ва операций выигрыша практически нет), так что скорее всего не прокатит.
Граждане форумчане, если можете предложить другой приемлемый вариант буду крайне признателен.