2014-11-10 2 views
0

Есть ли функция, которая возвращает максимальное число из подмассива большого массива longint?Максимальное значение subarray

Например:

У меня есть массив: [2,3,6,2,9,4,2,4]

Хочу максимальное значение первых 5 элементов [2, 3,6,2,9] матрицы (9)

Какой из лучших решений?

+0

Лучшее решение является тот, который вы сделали вверх;) – TLama

+0

я знаю ... я думал, чтобы сделать петлю, которая заполняет собой другой массив с элементами, которые мне нужно найти максимум, но я не» t знать, если это лучшее решение :( –

+2

Просто объявите переменную, которая будет удерживать это максимальное значение. Затем проведите по массиву и сравните текущее значение элемента с этой переменной. Если оно больше, сохраните значение элемента этой переменной. – TLama

ответ

5

Вам не нужно создавать другой массив. Первое решение, которое возникло бы, - это петля внутри вашего массива, беря первое значение как «tempMaxValue», а затем получая ваш массив, сравнивая каждое значение с «tempMaxValue».

Если значение больше, чем «tempMaxValue», обновите «tempMaxValue» с этим конкретным значением, а затем перейдите к следующему значению в массиве, иначе просто перейдите к следующему значению.

С помощью этого решения можно управлять количеством элементов, которые нужно искать в (здесь вы хотели наибольшее число в пределах 5 первых элементов, так что ваш цикл будет идти от 0 до 4)

Edit: (как @TLama сказал)

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. 
Смежные вопросы