Поиск min и max значений массива
Задача - Поиск min и max значений массива
Задача заключается в том, что нужно найти минимальное и максимальное значения в массиве, и поменять их местами.
PHP-код
$ar = [11, -10, 1, 77, 0, 66, 22, 3, 8, 7];
// Создаем $min и $max и присваиваем им значение 1-го элемента массива,
// чтобы было от чего отталкиваться
$min = $max = $ar[0];
// Поиск MAX и MIN
foreach($ar as $key=>$value){
if($max < $value){
$max = $value;
$keyMax = $key;
}
if($min > $value){
$min = $value;
$keyMin = $key;
}
}
echo "Максимальное значение массива и его Индекс<br>";
echo $max."<br>";
echo $keyMax;
echo "<p>";
echo "Минимальное значение массива и его Индекс<br>";
echo $min."<br>";
echo $keyMin;
// Меняем местами максимальное и минимальное значения
echo "<p>Исходный массив<br>";
print_r($ar);
// Можно поменять местами MAX и MIN так... Всё работает.
// $ar[$keyMax] = $min; - На место $max 'ставим' $min
// $ar[$keyMin] = $max; - На место $min 'ставим' $max
// Или создать третью/временную переменную
$tmp = $ar[$keyMax]; // Заносим в $tmp MAX
$ar[$keyMax] = $min; // На место $max 'ставим' $min
$ar[$keyMin] = $tmp; // На место $min 'ставим' $tmp
echo "<p>Измененный массив<br>";
print_r($ar);
Результат
Максимальное значение массива и его Индекс
77
3
Минимальное значение массива и его Индекс
-10
1
Исходный массив
Array ( [0] => 11 [1] => -10 [2] => 1 [3] => 77 [4] => 0 [5] => 66 [6] => 22 [7] => 3 [8] => 8 [9] => 7 )
Меняем местами максимальное и минимальное значения
Array ( [0] => 11 [1] => 77 [2] => 1 [3] => -10 [4] => 0 [5] => 66 [6] => 22 [7] => 3 [8] => 8 [9] => 7 )