相同大小的兩個已排序陣列的中位數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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告