插件窝 干货文章 php中如何求数组的中位数

php中如何求数组的中位数

数组 中位数 偶数 奇数 809    来源:    2025-03-18

在PHP中,求数组的中位数可以通过以下步骤实现:

  1. 对数组进行排序。
  2. 判断数组的长度是奇数还是偶数。
    • 如果是奇数,中位数就是排序后数组的中间元素。
    • 如果是偶数,中位数是排序后数组中间两个元素的平均值。

下面是一个实现这个逻辑的PHP代码示例:

function calculateMedian($arr) {
    // 首先对数组进行排序
    sort($arr);

    // 获取数组的长度
    $count = count($arr);

    // 计算中间位置的索引
    $middle = intval($count / 2);

    // 判断数组长度是奇数还是偶数
    if ($count % 2 == 0) {
        // 如果是偶数,返回中间两个数的平均值
        return ($arr[$middle - 1] + $arr[$middle]) / 2;
    } else {
        // 如果是奇数,返回中间的数
        return $arr[$middle];
    }
}

// 示例数组
$array = [3, 5, 1, 4, 2];

// 计算中位数
$median = calculateMedian($array);

echo "中位数是: " . $median;

代码解释:

  1. sort($arr);:对数组进行升序排序。
  2. $count = count($arr);:获取数组的长度。
  3. $middle = intval($count / 2);:计算中间位置的索引。
  4. if ($count % 2 == 0):判断数组长度是否为偶数。
    • 如果是偶数,返回中间两个数的平均值。
    • 如果是奇数,返回中间的数。

示例输出:

对于数组 [3, 5, 1, 4, 2],排序后为 [1, 2, 3, 4, 5],中位数是 3

对于数组 [3, 5, 1, 4, 2, 6],排序后为 [1, 2, 3, 4, 5, 6],中位数是 (3 + 4) / 2 = 3.5

这个函数可以处理任意长度的数组,并返回正确的中位数。