За последние 24 часа нас посетили 74559 программистов и 10147 роботов. Сейчас ищут 2368 программистов ...

помогите поменять местами максимальный и минимальные элементы

Тема в разделе "PHP для новичков", создана пользователем Залкар, 24 июл 2017.

  1. Залкар

    Залкар Новичок

    С нами с:
    24 июл 2017
    Сообщения:
    9
    Симпатии:
    0
    PHP:
    1. <?php
    2.     $a= array(-11,12,3,4,5,27,7,-8,99,4);
    3.     $min=$a[0];
    4.     $max=$a[0];
    5.     for($i=0;$i<10;$i++){
    6.         if($a[$i]<$min){
    7.             $min=$a[$i];
    8.             $min_i=$i;
    9.                }
    10.  
    11.     if($a[$i]>$max){
    12.         $max=$a[$i];
    13.         $max_i=$i;
    14.     }
    15.     }
    16.    
    17.     $temp=$a[$min_i];
    18.     $a[$min_i]=$a[$max_i];
    19.     $a[$max_i]=$temp;
    20.     for($i=0;$i<10;$i++){
    21.         echo $a[$i]."<br/>";
    22.     }
    23. ?>


    вроде правильно но не получаеться
     
    #1 Залкар, 24 июл 2017
    Последнее редактирование модератором: 25 июл 2017
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.843
    Симпатии:
    1.338
    Адрес:
    Лень
    перевернуть массив ? или фильтрацию от мин до макс ?
    --- Добавлено ---
    одна функция делает это
    https://php.ru/manual/function.asort.html
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    MouseZver, причем здесь фильтрация. в названии темы вся суть.

    Залкар можно так
    PHP:
    1. $a = array(-11,12,3,4,5,27,7,-8,99,4);
    2. $min_i = $max_i = 0; // индексы максимального и минимального элемента
    3. foreach($a as $k=>$v) {
    4.     $min_i =  $v<$a[$min_i] ? $k : $min_i;
    5.     $max_i =  $v>$a[$max_i] ? $k : $max_i;
    6. }
    7. list($a[$min_i], $a[$max_i]) = [$a[$max_i],$a[$min_i]]; // меняем местами элементы
     
    [vs] нравится это.
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.843
    Симпатии:
    1.338
    Адрес:
    Лень
    @runcore что получилось ?
     
  5. Залкар

    Залкар Новичок

    С нами с:
    24 июл 2017
    Сообщения:
    9
    Симпатии:
    0
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    самый банальный вариант
    PHP:
    1. $a = array(-11,12,3,4,5,27,7,-8,99,4);
    2. $max_val = max($a);
    3. $min_val = min($a);
    4. $max_key = array_search($max_val, $a);
    5. $min_key = array_search($min_val, $a);
    6. $a[$min_key] = $max_val;
    7. $a[$max_key] = $min_val;
    8. print_r($a);
     
  7. Залкар

    Залкар Новичок

    С нами с:
    24 июл 2017
    Сообщения:
    9
    Симпатии:
    0
    спасибо