我昨天在测试中被问到这个问题,最后我使用了计数排序。我失败了因为它使用了许多for循环并且它不止一次迭代数组。 任何人都可以帮忙......
答案 0 :(得分:0)
它给了我最大的元素
$array=array(2,3,11,6,4,7);
$max=$array[0];
foreach($array as $d)
{
if($d > $max){
$max=$d;
}
}
echo $max;
答案 1 :(得分:0)
编辑:这是修改删除我最初使用的arsort()
,正如所指出的那样,它是一个本机PHP函数。此脚本将考虑未知值的随机订单,这意味着您可以按任意顺序将$a
指定为任意数字范围,并且仍会占据前2位。
// create array
$a = range(1,20);
// Shuffle so it's random order
shuffle($a);
// Start at 0 for each comparison
$val1 = 0;
$val2 = 0;
// loop through
foreach($a as $values) {
// If current $values is greater than at least
// one of the stored $val1 & $val2
if(($values > $val1) || ($values > $val2)) {
// Check which is greater of two stored
if($val1 > $val2)
// Assign val2 if val1 is greater
// You need to replace the smaller
// of the two values
$val2 = $values;
else
// Opposite of above
$val1 = $values;
}
}
// voila! reveal top 2
var_dump($val1,$val2);
这将为您提供20 19
或19 20
,具体取决于随机数组的顺序。
答案 2 :(得分:-1)
$data = array(1,9,23,7,6,10,12,111);
$x1 = $data[0];
$x2 = $data[1];
for ($i = 2; $i < count($data); $i++)
{
if ($data[$i] > $x2 && $x2 < $x1) {
$x2 = $data[$i];
} elseif ($data[$i] > $x1 && $x1 < $x2) {
$x1 = $data[$i];
}
}
var_dump($x1, $x2);