PHP 同样大小的两个已排序数组的中位数
PHP(超文本预处理器)是一种流行的脚本语言,专为网页开发设计。它被广泛用于创建动态和交互式的网页。PHP代码可以直接嵌入到HTML中,允许开发人员无缝混合PHP和HTML。PHP可以连接数据库,处理表单数据,生成动态内容,处理文件上传,与服务器交互,执行各种服务器端任务。
PHP支持各种Web开发框架,如Laravel、Symfony和CodeIgniter,提供了额外的工具和功能,用于构建Web应用程序。PHP是一种开源语言,拥有庞大的社区、广泛的文档和丰富的库和扩展生态系统。
同样大小的两个已排序数组的中位数
中位数是将数据集的上半部分与下半部分分开的值。要计算数组的中位数,需要考虑已排序数组的中间元素。
示例
<?php
// A Simple Merge based O(n) solution
// to find median of two sorted arrays
// This function returns median of
// ar1[] and ar2[]. Assumptions in
// this function: Both ar1[] and ar2[]
// are sorted arrays Both have n elements
function getMedian(ar1,ar2, n)
{
// Current index of i/p array ar1[]i = 0;
// Current index of i/p array ar2[]
j = 0;count;
m1 = -1;m2 = -1;
// Since there are 2n elements,
// median will be average of elements
// at index n-1 and n in the array
// obtained after merging ar1 and ar2
for (count = 0;count <= n;count++)
{
// Below is to handle case where
// all elements of ar1[] are smaller
// than smallest(or first) element of ar2[]
if (i ==n)
{
m1 =m2;
m2 =ar2[0];
break;
}
// Below is to handle case where all
// elements of ar2[] are smaller than
// smallest(or first) element of ar1[]
else if (j ==n)
{
m1 =m2;
m2 =ar1[0];
break;
}
if (ar1[i] < ar2[j])
{
// Store the prev median
m1 =m2;
m2 =ar1[i];i++;
}
else
{
// Store the prev median
m1 =m2;
m2 =ar2[j];j++;
}
}
return (m1 +m2) / 2;
}
// Driver Code
ar1 = array(1, 3, 5, 7, 9, 11);ar2 = array(12, 10 ,8 ,6 ,4, 2);
n1 = sizeof(ar1);
n2 = sizeof(ar2);
if (n1 ==n2)
echo("Median is " .
getMedian(ar1,ar2, $n1));
else
echo("Doesn't work for arrays".
"of unequal size");
?>
输出
它将产生以下输出:
Median is 11.5
代码说明
提供的代码实现了一种简单的基于合并的解决方案,用于找到两个已排序数组的中位数, ar1和 ar2,它们的大小相同。getMedian函数将两个输入数组和大小n作为参数。它初始化变量以跟踪当前索引、计数器和先前的中位数。它在计数从0到n的过程中,比较两个数组的元素。根据比较结果,它相应地更新先前的和当前的中位数。
该函数处理了其中一个数组的元素小于另一个数组的元素的情况。最后,它通过求先前和当前中位数的平均值来返回计算得到的中位数。在提供的示例中,驱动代码创建了两个数组ar1和 ar2,并计算它们的大小。它调用getMedian函数来找到数组的中位数并打印结果。如果数组的大小不等,则显示错误消息。
在示例中, ar1包含[1, 3, 5, 7, 9, 11],而 ar2包含[12, 10, 8, 6, 4, 2]。两个数组的长度相同,因此算法可以进行。迭代按照比较数组中的元素进行更新,中位数也相应更新。最后,中位数被计算为(11 + 12) / 2,得到中位数为11.5。因此,代码的输出将是 “Median is 11.5″。
结论
PHP提供了一种基于合并的方法来找到两个大小相同的已排序数组的中位数。通过合并数组并考虑中间两个元素,该程序准确地确定了中位数。它利用两个索引来遍历数组,比较元素并相应地更新中位数变量。
结果中位数是中间元素的平均值(如果数组长度为偶数)或中间元素(如果数组长度为奇数)。这种高效的O(n)解决方案为在PHP中计算两个大小相同的已排序数组的中位数提供了可靠且直接的方法。