在多维数组中查找最大数组的快速方法?

Sco*_*ski 5 php arrays computer-science

情况:我有一个元素数量可变的多维数组。例如

array(N) {
    0 => array(3) { ... },
    1 => array(8) { ... },
    2 => array(1) { ... },
    ...
    M => array(12) { ... },
    ...
    N-1 => array(7) { ... }
}
Run Code Online (Sandbox Code Playgroud)

我想找到这个子数组中元素的最大数量(在上面的例子中,它是 12)。一个简单的解决方案是 O(N) 线性搜索。

<?php
function max_length($2d_array) {
    $max = 0;
    foreach($2d_array as $child) {
        if(count($child) > $max) {
            $max = count($child);
        }
    }
    return $max;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不禁想知道是否有一些聪明的技巧可以优化此查找。所以我的问题是一个两部分(尽管对任一部分的答案都可以解决它):

  • 是否有一种算法可以比 O(N) 更快地执行此搜索而无需特殊要求(预排序等)?
  • 是否有一个晦涩的 PHP 函数可以在本机代码而不是我的用户级 PHP 脚本中执行此搜索?

小智 5

你可以使用这个:https : //www.php.net/manual/ro/function.max.php

$test = array(
           array('G', 'M', 2, 2),
           array(1, 2222, 3)
         );
 $arr = max($test);
Run Code Online (Sandbox Code Playgroud)

// 输出 ->

array(4) {
  [0]=>
  string(1) "G"
  [1]=>
  string(1) "M"
  [2]=>
  int(2)
  [3]=>
  int(2)
}
Run Code Online (Sandbox Code Playgroud)

  • 对于“max()”来说,这是一个简洁、出乎意料但已记录的行为。 (2认同)