Максимальное значение массива программа

Алгоритм поиска максимального элемента неупорядоченного массива заключается в следующем:

  • сначала мы предполагаем, что наибольший элемент находиться в начале массива;
  • сохраняем значение первого элемента в переменной;
  • затем мы сравниваем его с другими элементами массива один за другим, если какой-либо элемент больше, чем наш предполагаемый максимум, то обновляется значение переменной;
  • после обхода всего массива, возвращаем максимальный элемент.

Код программы для поиска максимального элемента массива

program Maximal; const arrayLength = 10; var inputArray : array [1..arrayLength] of integer; maximum, i: integer; begin randomize; writeln (‘Исходный массив: ‘); for i := 1 to arrayLength do begin inputArray[i] := random(100); write (inputArray[i]:4); end; writeln; maximum := inputArray[1]; for i := 2 to arrayLength do if maximum < inputArray[i] then maximum := inputArray[i]; write(‘Максимальный элемент массива ‘, maximum); readln; end.

Рекурсивный алгоритм нахождения максимального значения элемента массива

Найти максимальный элемент массива, можно также — рекурсивно. Реализация метода немного сложнее предыдущего, однако полезна для изучения принципов рекурсивных вызовов функций.

Как найти минимум и максимум массива | Фрагмент лекции JavaRush — университета


program Maximum; const arrayLen = 10; var inputArr : array [1..arrayLen] of integer; max, i: integer; function MaxElement(maximal, index: integer):integer; begin if index > arrayLen then MaxElement := maximal else begin if inputArr[index] > maximal then maximal := inputArr[index]; MaxElement := MaxElement(maximal, index + 1); end; end; begin randomize; writeln (‘Исходный массив: ‘); for i := 1 to arrayLen do begin inputArr[i] := random(100); write (inputArr[i]:4); end; writeln; max := inputArr[1]; max := MaxElement(max, 2); write(‘Наибольший элемент ‘, max); readln; end.

Источник: programm.top

Поиск максимального элемента в массиве

Ввести целочисленный массив из N элементов с клавиатуры. Найти максимальный элемент этого массива.

Исходный код на языке C++

/* * Ввести целочисленный массив из N целых чисел. * Найти максимальный элемент массива */ #include using namespace std; int main() < int *arr; // указатель для выделения памяти под массив int size; // размер массива // Ввод количества элементов массива cout > size; if (size arr = new int[size]; // выделение памяти под массив // заполнение массива for (int i = 0; i < size; i++) < cout > arr[i]; > // Нахождение максимального элемента int max = arr[0]; for (int i = 1; i < size; i++) < if (arr[i] >max) < max = arr[i]; >> // Вывод результата на экран cout

Читайте также:
Программа для тендеров какая лучше

Источник: code-live.ru

Поиск минимального и максимального значения в массиве

Объясните на пальцах, почему именно так? Ведь по сути получилось, что: Максимумом и минимумом одновременно, назначен нулевой (первый) элемент массива. Дальше он по циклу сравнивает, нулевой элемент массива, с каждым следующим, и постепенно если нулевой больше или меньше следующего назначает минимумы и максимумы. Таким образом например массив A из [N] элементов, где N=5.И массив имеет следующие значения <10,5,7,8,11>; Я вижу что цикл по идее будет работать так:

УРОК 9 -10. Максимальный и минимальный элемент массива (10 класс)


шаг 1. If (10 < 5) Max = A[0] if (10 >5) Min = A[1] шаг 2. if (10 < 7) Max = A[0] if (10 >7) Min = A[2] — уже ошибка т.к. 5 < 7 шаг 3. if (10 < 8) Max = A[0] if (10 >8) Min = A[3] шаг 4. if (10 < 11) Max = A[4] if (10 >11) Min = A[3]

Или программа работает не так? точнее она и работает не так, не понимаю логику, объясните пожалуйста.

Отслеживать
67.8k 210 210 золотых знаков 76 76 серебряных знаков 218 218 бронзовых знаков
задан 14 июн 2019 в 10:29
alex fedorov alex fedorov
11 1 1 бронзовый знак

он по циклу сравнивает, нулевой элемент массива, с каждым следующим, — Разве в коде сказано if (A[0] < A[i]) ? Нет. Не нулевой, а текущие минимум и максимум, которые изменяются в ходе работы цикла.

14 июн 2019 в 10:34
спасибо огромное. Не знаю как Вас отблагодарить и поставить плюсик. Закройте тему. Теперь понял.
14 июн 2019 в 10:38

Ну, там уже два ответа написали, выберите, какой вам кажется наиболее подходящим, и поставьте галочку. 🙂 Или напишите еще один ответ сами, это тоже будет полезно. 🙂

Читайте также:
Какие программы используются для отправки создания и чтения электронных сообщений

14 июн 2019 в 10:41

Так самое понятное объяснение у Вас: что указаны текущие минимумы и максимумы в теле If-а, которые назначаются в ходе работы цикла. А те два ответа, они такие же замудренные как объяснения моего преподавателя.

14 июн 2019 в 10:54

Ну, мне, честно говоря, лень переделывать комментарий в полноценный ответ. 🙂 Напишите ответ сами, так чтобы было понятно и Вам, и тем, кто потом столкнется с такой же проблемой. 🙂

14 июн 2019 в 11:00

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Если пройтись по приведенным в вопросе итерациям:

// итерация 0 if (10 < 5) Max = A[0] if (10 >5) Min = A[1] // итерация 1 if (10 < 7) Max = A[0] if (10 >7) // здесь ошибка в условии Min = A[1]

Там, где ошибка, будет не 10, а уже 5, т.к. значение Min изменилось на предыдущей итерации ( Min = a[1] ).

Отслеживать
ответ дан 14 июн 2019 в 10:36
2,464 2 2 золотых знака 13 13 серебряных знаков 26 26 бронзовых знаков

Ну давайте я побуду отладчиком

шаг 1. If (10 < 5) Max = 5 //не выполнится if (10 >5) Min = 5 //выполнится шаг 2. if (10 < 7) Max = 7 //не выполнится if (5 >7) Min = A[2] — уже ошибка т.к. 5 < 7 //неправда, вы ошиблись Min = 7 //не выполнится шаг 3. if (10 < 8) Max = 8 // не выполнится if (5 >8) Min = 8 // не выполнится шаг 4. if (10 < 11) Max = 11 //выполнится if (5 >11) Min = 11 //не выполнится Max — 11, Min — 5
Отслеживать
ответ дан 14 июн 2019 в 10:37
1,192 7 7 серебряных знаков 11 11 бронзовых знаков

Читайте также:
Планшет xp pen программа

Код, который вы представили на самом деле пример использования динамического программирования.

Пусть вас не пугает слово «динамическое программирование», в данном случае алгоритм очень прост и мы рассмотрим его подробно применительно к нашей задаче. Сформулируем алгоритм. Для простоты я буду его описывать для случая поиска максимума, для минимума всё аналогично.

Итак, у нас есть массив A , с индексами от 0 до N — 1 , заведём переменную M . Теперь будем обновлять переменную M так, чтобы после 0-й итерации цикла в M лежал бы максимум массива A[0] , после 1-й лежал бы максимум массива A[0], A[1] , после 2-й максимум в A[0], A[1], A[2] и так далее, после k-й итерации в M будет лежать максимум первых k + 1 элементов массива, то есть максимум его начала A[0], A[1], . , A[k] .

Легко видеть, что если мы организуем такую процедуру, то после N — 1 итераций цикла мы в переменной M получим максимум в A[0], A[1], . , A[N — 1] , то есть в точности максимум во всём массиве.

Осталось только разобраться, как организовать такой цикл. Вначале надо взять M = A[0] , при первом шаге максимум массива из одного элемента это он сам и есть.

Как теперь сделать шаг? Если у нас есть максимум среди A[0], A[1], . , A[k] , и он равен M , то максимум среди A[0], A[1], . , A[k], A[k + 1] это либо M , либо вновь добавленный элемент A[k + 1] , в зависимости от того, превысил ли добавленный элемент уже имеющийся максимум.

Отсюда становится ясно, что новый максимум равен наибольшему из ранее найденного (то есть M ) и вновь добавленного элемента (то есть A[k + 1] ), это значит, что максимум M следует обновить таким образом: M := max(M, A[k + 1]) . Ровно это и происходит внутри цикла при обновлении переменной Max :

if (Max < A[i]) Max = A[i];

Алгоритмы, когда мы последовательно увеличиваем область охвата данных, обновляя на каждом шагу некую характеристику, используя её значение, подсчитанное на предыдущем шаге, известны под общим названием Динамическое программирование. В данном случае это один из простейших алгоритмов этого типа.

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru