如何在PHP中的有序数字列表中获得最大的区别?

时间:2009-11-01 10:39:55

标签: php algorithm

例如,

1,3,6,8,11,45,99

数字之间的间隔是:

2,3,2,3,34,54

所以最大的区别是54。

如何实现此功能?

function get_greatest_diff($arr_of_numbers)
{}

3 个答案:

答案 0 :(得分:2)

你有很多不同的选择:

  • 对数组进行排序,然后比较第一个和最后一个元素
    1. 对于每个元素,将其与每个后续元素进行比较。保持最大的记忆差异。
    2. 实现某种合并排序,但返回差异而不是原始排序值。

答案 1 :(得分:2)

您应该分别处理数组少于2个元素的情况:

$maxDiff = -1;
for ($i = 0; $i + 1 < count($array); $i++) {
    $diff = $array[$i + 1] - $array[$i];
    if ($diff > $maxDiff)
        $maxDiff = $diff;
    }
}

答案 2 :(得分:1)

你应该这样做:

$greatest_diff = 0;

for($i = 0; $i < sizeof($arr_of_numbers) - 1; $i++)
{
    $current_diff = $arr_of_numbers[$i + 1] - $arr_of_numbers[$i];
    if($current_diff > $greatest_diff){
        $greatest_diff = $current_diff;
    }
}

echo $greatest_diff;