Intereting Posts

Поиск 4 наивысших значений из массива

Вместо 1, как я могу выбрать 4 наивысших значения из массива с помощью max() ?

Это будет сделано в течение Θ (n):

 $a = $b = $c = $d = null; foreach($array as $v) { if(!isset($a) || $v > $a) { $d = $c; $c = $b; $b = $a; $a = $v; }elseif(!isset($b) || $v > $b) { $d = $c; $c = $b; $b = $v; }elseif(!isset($c) || $v > $c) { $d = $c; $c = $v; }elseif(!isset($d) || $v > $d) { $d = $v; } } $result = array($a, $b, $c, $d); 

Вы можете использовать SplMaxHeap

 function maxN(array $numbers, $n) { $maxHeap = new SplMaxHeap; foreach($numbers as $number) { $maxHeap->insert($number); } return iterator_to_array( new LimitIterator($maxHeap, 0, $n) ); } 

Использование ( демо ):

 print_r( maxN( array(7,54,2,4,26,7,82,4,34), 4 ) ); 

Вы можете попробовать следующее:

 $a = array(3,5,6,1,23,6,78,99); asort($a); var_dump(array_slice($a, -4)); 

НТН.

 function maxs($ar, $count=4) { $res = array(); foreach ($ar as $v) { for ($i = 0;$i < $count;$i++) { if ($i >= count($res) || $v > $res[$i]) { do { $tmp = $res[$i]; $res[$i] = $v; $v = $tmp; $i++; } while ($i < $count); break; } } } return $res; } 

Простой метод с использованием предопределенных функций php.

 <?php $arr = array(6, 8, 3, 2, 7, 9); rsort($arr); $first = array_shift($arr); $second = array_shift($arr); $third = array_shift($arr); echo $first; // print 9 echo $second; // print 8 echo $third; // print 7 ?> 

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