面试题,求解 一数组 $target = array(23,43,87,12,34,46,90,42,9,3);要求对其进行排序,最终的顺序是 第一个是最大的,第二个是最小的,第三个是剩下的最大的,第四个是剩下的最小的,依次类推。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?$target = array(23,43,87,12,34,46,90,42,9,3);sort($target);for ($i=0;$i<5;$i++){$big=9-$i;echo $target[$big] . "<br/>";echo $target[$i] . "<br/>";}?> 先将它升序排列,就是从小到大排列。那么他们的主键的数字索引分别是0,1,2,3,····7,8,9一个十个。主键数字越大的对应的数值也越大。所以现在的主键目标位置是:9,0,8,1,7,2,6,3,5,4.因为9+0=8+1=7+2等等所以按两组为一次输出。$big+$i=9.下面的就不说了。我也是一个小白,这段时间学了点。错的大家再交流。一起进步 修改一下啊。<?$target = array(23,43,87,12,34,46,90,42,9,3);sort($target);$sum=count($target)-1;//键位数echo $sum;for ($i=0;$i<5;$i++){$big=$sum-$i;echo $target[$big] . "<br/>";echo $target[$i] . "<br/>";}?> <?php$target = array(23,43,87,12,34,46,90,42,9,3);rsort($target);$rest = array();for($i=0,$j = count($target)-1;$i<$j;$i++,$j--){ $rest[] = $target[$i]; if($i!=$j){ $rest[] = $target[$j]; } }var_export($rest); 先用函数将其排列 从大到小然后把最大的和 最小的取出来 假如函数排列后就是 a,b,c,d,e,f然后每次取出第一个和最后一个数加入新的数组取到没有数位置 那就是你要的函数了 $ar = array(23,43,87,12,34,46,90,42,9,3);sort($ar);while($ar) { $r[] = array_pop($ar); if(! $ar) break; $r[] = array_shift($ar);}print_r($r);Array( [0] => 90 [1] => 3 [2] => 87 [3] => 9 [4] => 46 [5] => 12 [6] => 43 [7] => 23 [8] => 42 [9] => 34) 修正一下。上面应该是for($i=0,$j = count($target)-1;$i<=$j;$i++,$j--) #8 对php各种内置函数已经达到精通的境界了。 mysql怎么得到这么一条记录? session不能传递一个xml对象吗 ? PHP递归 调用DZ6.1.0数据显示乱码 帮下。。 织梦模板的路径配置文件在哪 信息采集的网站违法吗 Mysql 插入工具使用 现代汉语同义词表 存在这个吗? Header的怪问题! 关于session的问题 检测字符串编码 html的表格里能include php文件么?
sort($target);
for ($i=0;$i<5;$i++)
{
$big=9-$i;
echo $target[$big] . "<br/>";
echo $target[$i] . "<br/>";
}
?>
因为9+0=8+1=7+2等等所以按两组为一次输出。$big+$i=9.
下面的就不说了。我也是一个小白,这段时间学了点。错的大家再交流。一起进步
sort($target);
$sum=count($target)-1;//键位数
echo $sum;
for ($i=0;$i<5;$i++)
{
$big=$sum-$i;
echo $target[$big] . "<br/>";
echo $target[$i] . "<br/>";
}
?>
$target = array(23,43,87,12,34,46,90,42,9,3);
rsort($target);$rest = array();
for($i=0,$j = count($target)-1;$i<$j;$i++,$j--){
$rest[] = $target[$i];
if($i!=$j){
$rest[] = $target[$j];
}
}var_export($rest);
然后把最大的和 最小的取出来
假如函数排列后就是 a,b,c,d,e,f然后每次取出第一个和最后一个数加入新的数组
取到没有数位置 那就是你要的函数了
sort($ar);while($ar) {
$r[] = array_pop($ar);
if(! $ar) break;
$r[] = array_shift($ar);
}print_r($r);Array
(
[0] => 90
[1] => 3
[2] => 87
[3] => 9
[4] => 46
[5] => 12
[6] => 43
[7] => 23
[8] => 42
[9] => 34
)
修正一下。上面应该是for($i=0,$j = count($target)-1;$i<=$j;$i++,$j--)