PHP排序问题,看图

发布于 2022-09-11 15:05:57 字数 535 浏览 19 评论 0

某公司面试题,想了半个小时没思路。

$arr = [
    [4, 5, 9, 4, 1],
    [11, 14, 9, 6, 20],
    [21, 44, 90, 16, 21],
    [16, 34, 99, 600, 230],
    [121, 18, 89, 60, 33]
]

对以上数组排序,数组 $arr[0][0] 为最大值,$arr[4][4] 为第二大,$arr[0][1] 为第三大,以此类推,$arr[2][2] 为最小值

4、33、5、60~~~90

006tNbRwly1fwx7gs4yxmj31hc0u0kjc.jpg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

路还长,别太狂 2022-09-18 15:05:57

不知道是不是这样

$arr = [
    [4, 5, 9, 4, 1],
    [11, 14, 9, 6, 20],
    [21, 44, 90, 16, 21],
    [16, 34, 99, 600, 230],
    [121, 18, 89, 60, 33]
];
$result = array_reduce($arr, 'array_merge', array());
$count=count($result);
for($i=0;$i<$count;$i++){
    if($i%2==0){
        $arrs[]+=$result[$i/2];
    }else{
        $arrs[]+=$result[$count-1-floor($i/2)];
    }
}
print_r($arrs);
如梦亦如幻 2022-09-18 15:05:57
$arr = [
    [4, 5, 9, 4, 1],
    [11, 14, 9, 6, 20],
    [21, 44, 90, 16, 21],
    [16, 34, 99, 600, 230],
    [121, 18, 89, 60, 33]
];

foreach ($arr as &$v) {
    rsort($v);
    $l = $r = [];
    foreach ($v as $key => $value) {
        if ($key & 1) {
            array_unshift($r, $value);
        } else {
            $l[] = $value;
        }
    }
    $v = array_merge($l, $r);
}
var_dump($arr);

在@Masterton的基础上做了些许修改

少年亿悲伤 2022-09-18 15:05:57
$arr = [
    [4, 5, 9, 4, 1],
    [11, 14, 9, 6, 20],
    [21, 44, 90, 16, 21],
    [16, 34, 99, 600, 230],
    [121, 18, 89, 60, 33]
]

$arr1 = [];
foreach ($arr as $v) {
    $arr1 = array_merge($arr1, $v);
}

rsort($arr1);

$arrA = [];
$arrB = [];

foreach ($arr1 as $key => $value) {
    if ($key % 2 == 0) {
        $arrA[] = $value;
    } else {
        array_unshift($arrB, $value);
    }
}

$arrC = array_merge($arrA, $arrB);

return array_chunk($arrC, 5);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文