Разумеется, проще всего получить минимальный и максимальный элементы массива с помощью функций min() и max() :
$arr = [8, 4, 12, 9]; $max = max($arr); // 12 $min = min($arr); // 4
Однако на форумах часто просят написать скрипт, не использующий эти функции. Чаще всего этого требуют преподаватели учебных учреждений.
Условия задачи
1. Найти наибольший наименьший элементы в одномерном числовом массиве.
2. Определить номер минимального и максимального элементов заданного одномерного массива.
3. Найти минимальное и максимальное значение в ассоциативном массиве.
Общий принцип поиска элементов
Во всех решениях мы будем использовать одну и ту же логику.
Согласно условию, нам необходимо объявить числовой массив произвольной длины. Также объявим 4 переменные, в которые будем помещать найденные значения и их ключи:
Далее перебираем массив в цикле и на каждой итерации проверяем, больше ли текущее значение, чем самое большое, что мы находили до этого.
C++ | Максимальный элемент массива
И если больше — будем записывать в $max новое максимальное значение, а в $max_key его ключ. Абсолютно также поступим и с минимальными ключом и значением.
Пример с циклом foreach:
foreach($arr as $k => $v) < if($v >$max) < $max = $v; $max_key = $k; >if($v < $min) < $min = $v; $min_key = $k; >>
На данном этапе наш код уже будет работать, но это ещё не всё. Попробуем изменить исходный массив и посмотрим на результат:
$max) $max = $v; > var_dump($max); // -12
Максимальным должно быть число 0 , но скрипт вывел -12 . Дело в том, что PHP не считает истинным выражение 0 > null , поэтому ноль на первой итерации цикла не записался в переменную $max .
Для решения этой проблемы просто добавим условие, что если $max === null , т.е. если это первая итерация, то в любом случае записываем текущее значение в $min и $max :
$max or $max === null) $max = $v; > var_dump($max); // -12
Минимальный и максимальный элементы с циклом FOREACH
Решение:
$v) < if($v >$max or $max === null) < $max = $v; $max_key = $k; >if($v < $min or $min === null) < $min = $v; $min_key = $k; >> echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Минимальный и максимальный элементы с циклом WHILE
Решение 1: счётчик + count()
Цикл будет выполняться до тех пор, пока значение счётчика $i не превысит количество элементов массива.
$max or $max === null) < $max = $arr[$i]; $max_key = $i; >if($arr[$i] < $min or $min === null) < $min = $arr[$i]; $min_key = $i; >$i++; > echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Решение 2: счётчик + isset()
Запускаем вечный цикл while и в каждой итерации цикла проверяем существование следующего элемента с помощью isset() . Если его нет — выходим из цикла оператором break :
Язык C++ с нуля | #33 Найти максимальный и минимальный элемент массива в c++
$max or $max === null) < $max = $arr[$i]; $max_key = $i; >if($arr[$i] < $min or $min === null) < $min = $arr[$i]; $min_key = $i; >> else break; $i++; > echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Решение 3: list() + each()
Функция each() возвращает ключ и значение текущего элемента массива и смещает его внутренний указатель на единицу. Функция list() используется просто для удобства — с её помощью мы превращаем массив, который возвращает функция each, в две разные переменные:
$max or $max === null) < $max = $v; $max_key = $k; >if($v < $min or $min === null) < $min = $v; $min_key = $k; >> echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Получился практически аналог foreach. Единственный минус в том, что начиная с PHP 7.2 функция each() объявлена устаревшей.
Решение 4: current() + next()
Это решение похоже на предыдущее с each(). Получаем текущий элемента массива функцией current() и смещаем внутренний указатель массива функцией next() . Получить текущий ключ массива можно с помощью функции key() .
$max or $max === null) < $max = $v; $max_key = key($arr); >if($v < $min or $min === null) < $min = $v; $min_key = key($arr); >next($arr); > echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Наибольший и наименьший элементы с циклом FOR
Решение 1: счётчик + count()
Вводим счётчик $i и увеличиваем его после каждой итерации. Цикл прекратится как только значение счётчика превысит количество элементов массива.
$max or $max === null) < $max = $arr[$i]; $max_key = $i; >if($arr[$i] < $min or $min === null) < $min = $arr[$i]; $min_key = $i; >> echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Решение 2: счётчик + isset()
В отличие от предыдущего варианта, мы не смотрим на количество элементов массива, а запускаем вечный цикл и в каждой итерации проверяем существование следующего элемента, и если его нет — прерываем цикл командой break :
$max or $max === null) < $max = $arr[$i]; $max_key = $i; >if($arr[$i] < $min or $min === null) < $min = $arr[$i]; $min_key = $i; >> echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Решение 3: each() + list()
Функция each() возвращает массив с ключом и значением текущего элемента массива, а list() превращает этот массив в 2 разные переменные. После последнего элемента функция each() вернёт false и цикл прекратит работу.
$max or $max === null) < $max = $v; $max_key = $k; >if($v < $min or $min === null) < $min = $v; $min_key = $k; >> echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Решение 4: current() + next()
С помощью функции next() смещаем внутренний указатель массива, а функции current() и key() возвращают текущие ключ и значение. Первое и последнее выражение цикла оставляем пустыми.
$max or $max === null) < $max = $v; $max_key = key($arr); >if($v < $min or $min === null) < $min = $v; $min_key = key($arr); >next($arr); > echo «Min value: $min
Min key: $min_key
«; echo «Max value: $max
Max key: $max_key»;
Максимальное значение в ассоциативном массиве
В ассоциативных массивах отсутствует порядок или системность в названиях ключей, поэтому циклы со счётчиками здесь недоступны.
Но мы всё ещё можем использовать цикл foreach и те решения для while и for, где используются функции each() и next() , поскольку они используют не ключи, а внутренний указатель массива.
Источник: www.programulin.ru
Максимальный элемент массива
Максимальный элемент массива лучше всего искать с помощью цикла. Например, можно использовать for. Также требуется оператор if.
Вот соответствующий код:
for ( i = 1 ; i < n ; i ++ )
if ( A [ i ] > max )
Используются две переменные max — значение максимального элемента и i_max — номер максимального элемента.
Вначале максимальным элементом объявляется нулевой элемент массива, то есть самый первый, так как в С++ элементы массива нумеруются с нуля.
После этого в цикле последовательно проверяется, а не больше ли очередной элемент массива, чем текущий максимум. И, если больше, то значение и номер текущего максимума изменяются.
Обычно нужно сделать, чтобы массив вводил пользователь. Также обычно нужно вывести пользователю ответ. Ввод/вывод может осуществляться, например, в консольном режиме.
Источник: proginfo.ru
Найдите максимальное число в массиве в Java
- Найти максимальное число в массиве итеративным способом
- Найти максимальное число в массиве с помощью Stream
- Найти максимальное число в массиве с помощью Arrays.sort()
Массив содержит данные аналогичного типа. Хотя вы уже можете прочитать все элементы и выполнить с ними несколько операций, в этой статье показано, как найти максимальное значение в массиве в Java.
Найти максимальное число в массиве итеративным способом
Этот метод — традиционный способ найти максимальное число из массива. Он включает итератор, который используется для просмотра каждого элемента в массиве. Ниже у нас есть массив целых чисел intArray ; Сначала мы создаем переменную maxNum и инициализируем ее первым элементом intArray .