Как найти максимальный элемент массива
Перейти к содержимому

Как найти максимальный элемент массива

  • автор:

Как найти максимальное значение в массиве java

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

int[] arr = 10, 7, 1, 4, 7, 4, 11>; // Предположим, что нулевой элемент максимальный int max = arr[0]; // В цикле начинаем с первой ячейки for (int i = 1; i  arr.length; i++)  if (arr[i] > max)  max = arr[i]; > > System.out.println(max); // => 11 

Math.max()

Метод Math.max() возвращает наибольшее из нуля или более чисел.

Синтаксис

Math.max([value1[, value2[, . ]]])

Параметры

Описание

Поскольку метод max() является статическим методом объекта Math , вы всегда должны использовать его как Math.max() , а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

При вызове без аргументов результатом вызова будет значение — Infinity .

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет NaN .

Примеры

Пример: использование метода Math.max()

.max(10, 20); // 20 Math.max(-10, -20); // -10 Math.max(-10, 20); // 20 
Нахождение максимального элемента в массиве

Следующая функция использует метод Function.prototype.apply() для нахождения максимального элемента в числовом массиве. Вызов getMaxOfArray([1, 2, 3]) эквивалентен вызову Math.max(1, 2, 3) , однако вы можете использовать функцию getMaxOfArray() вместе с программно сконструированными массивами любого размера. Рекомендуется использовать только в случае обработки массивов с небольшим количеством элементов.

function getMaxOfArray(numArray)  return Math.max.apply(null, numArray); > 

Спецификации

Specification
ECMAScript Language Specification
# sec-math.max

Совместимость с браузерами

BCD tables only load in the browser

Информатика. 10 класс (Повышенный уровень)

Очень часто для решения задачи требуется находить не заданный элемент массива, а максимальный (наибольший) или минимальный (наименьший) элемент.

Рассмотрим задачу нахождения максимального элемента. Если в массиве один-единственный элемент, то он и есть максимальный. Если элементов больше одного, то максимальным в массиве из i элементов является максимум из a[i] и максимального среди первых i — 1 элементов. Находить максимум будем последовательно, сравнивая текущий элемент с максимумом, найденным на предыдущем шаге. Если текущий элемент больше, то значение максимума, найденное на предыдущем шаге, нужно обновить (пример 13.1).

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

Будем использовать переменную n_max для хранения индекса максимального элемента. Значение переменной n_max будет изменятся тогда, когда изменяется значение максимального элемента (пример 13.2).

Если в массиве несколько элементов имеют максимальное значение, то значением переменной n_max будет индекс первого из них. Если использовать условие a[i] >= max , то переменная n_max будет хранить индекс последнего из максимальных элементов.

Если известен индекс i элемента массива, то значение этого элемента можно получить, обратившись к элементу по индексу: a[i] . Поэтому при поиске максимального элемента достаточно хранить только его индекс n_max . Значение максимального элемента — a[n_max] (пример 13.3).

using namespace std ;

Л2Ш_июнь

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

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

Заведем переменную, в которой будем хранить максимальное значение.
В качестве начального значения присвоим этой переменной значение a[0].
Будем просматривать элементы массива по порядку и сравнивать с максимальным и, если значение какого-то элемента будет больше максимального, запомним это значение.

Задача 1. Дан массив целых чисел А, размер массива n не превосходит 100. Найти и вывести максимальное значение элементов массива.

#include int main() < int n, a[100], i, max; // max - в этой переменной будем хранить максимальное значение scanf("%d", &n); //вводим количество элементов for(i = 0 ; i < n ; i++) scanf("%d", &a[i]); //заполняем массив с клавиатуры поэлементно max = a[0]; //начальное значение переменной for(i = 1 ; i < n ; ++i) //просматриваем по порядку элементы массива (с 1-го, т.к. 0-й уже взяли) < if (a[i] >max) < max = a[i]; //нашли большее значение, меняем максимальное >> printf("%d", max); //печатаем результат поиска return 0; >

Дальше будем рассматривать только фрагмент программы с поиском максимального значения.

Всегда ли можно взять значение первого элемента в качестве начального?
А если есть дополнительные условия, например, максимальное должно быть четным? Или отрицательным?

Задача 2.Дан массив целых чисел А, размер массива n не превосходит 100. Найти и вывести максимальное четное значение в массиве или 1, если таких элементов нет.

max = INT_MIN; //начальное значение максимального for(i = 0 ; i < n ; ++i) //просматриваем по порядку элементы массива (с 0-го) < if (a[i] % 2 == 0) //значение элемента четное < if (a[i] >max) //нашли большее значение < max = a[i]; //меняем максимальное >> if (max == INT_MIN) printf("1"); else printf("%d", max);

Задача 3. Дан массив целых чисел А, размер массива n не превосходит 100. Найти и вывести номер максимального значения, если таких несколько — первого встретившегося.

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

int max = a[0]; //начальное значение максиммального int nummax = 0; //номер максимального значения for(i = 1 ; i < n ; ++i) //просматриваем по порядку элементы массива (с 1-го, т.к. 0-й уже взяли) < if (a[i] >max) < max = a[i]; //нашли большее значение, меняем максимальное nummax = i; //запоминаем его номер >> printf("%d", nummax);

Можно ли обойтись меньшим количеством переменных?
Можно. По номеру элемента всегда можно узнать его значение.

int nummax = 0; //номер максимального значения for(i = 1 ; i < n ; ++i) < if (a[i] >a[nummax]) < nummax = i; //запоминаем номер нового максимального >> printf("%d", nummax);

*В некоторых задачах нумерация элементов идет с единицы.
Просто корректируйте вывод, например, выводите (найденное_значение + 1).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *