相同大小的两个已排序数组的中位数PHP程序


PHP(超文本预处理器)是一种流行的脚本语言,专为网络开发而设计。它广泛用于创建动态和交互式网页。PHP代码可以直接嵌入到HTML中,允许开发人员无缝地混合PHP和HTML。PHP可以连接数据库,处理表单数据,生成动态内容,处理文件上传,与服务器交互以及执行各种服务器端任务。

PHP支持各种各样的网络开发框架,例如Laravel、Symfony和CodeIgniter,这些框架为构建网络应用程序提供了额外的工具和功能。PHP是一种开源语言,拥有庞大的社区、大量的文档以及丰富的库和扩展生态系统。

相同大小的两个已排序数组的中位数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。因此,代码的输出将是“中位数是11.5”。

结论

PHP提供了一种基于合并的方法来查找相同大小的两个已排序数组的中位数。通过合并数组并考虑中间两个元素,程序可以准确地确定中位数。它使用两个索引遍历数组,比较元素并相应地更新中位数变量。

如果数组长度为偶数,则结果中位数是中间元素的平均值;如果数组长度为奇数,则结果中位数是中间元素。这种高效的O(n)解决方案为在PHP中计算相同大小的两个已排序数组的中位数提供了一种可靠且直接的方法。

更新于:2023年8月1日

浏览量:112

开启你的职业生涯

完成课程获得认证

开始学习
广告