PHP :: Aufgabe #304

1 Lösung Lösung öffentlich

Median zweier zusammengefügter Arrays

Fortgeschrittener - PHP von JKooP - 21.11.2020 um 07:46 Uhr
Es soll der Median (Zentralwert) eines sortierten Arrays,
das aus zwei (beliebig großen) zusammengefügten sortierten Arrays besteht, ermittelt werden.

Beispiele:
arr1 = [1, 3] arr2 = [2]
mergeSorted = [1, 2, 3] -> Median = 2

arr1 = [2, 4] arr2 = [1, 3]
mergeSorted = [1, 2, 3, 4] -> Median = 2.5
(wenn kein Zentralwert vorhanden ist, dann wird das arithmetische Mittel der beiden mittleren Zahlen ermittelt)
-> (2+3) / 2 = 2.5

Weitere Beispiele:
[0, 0] [0, 0] -> 0
[] [4] -> 4
[3] [] -> 3
[] [] -> 0
[-4, 4] [-2, 1] -> [-4, -2, 1, 4] -> -0.5

Fortgeschrittene können die Funktion/Methode dahingehend erweitern,
sodass sowohl mindestens 2 Arrays aufgenommen werden,
als auch auch ein Array bzw. eine Liste von Arrays verarbeitet werden kann.


Viel Spaß

Lösungen:

vote_ok
von Exception (6850 Punkte) - 06.01.2021 um 15:40 Uhr
Quellcode ausblenden PHP-Code
<?php

$a0 = [1, 3];
$a1 = [2];

$result = merge_and_sort($a0, $a1);
$average = array_sum($result) / sizeof($result);

var_dump($result);
var_dump($average);

function merge_and_sort(...$arrays): array
{
	$result = [];
	
	foreach($arrays as $array) {
		if (!is_array($array)) array = (array)$array;
		$result = array_merge($result, $array);
	}
	
	sort($result);
	
	return $result;
}


Konsolenausgabe:

array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
int(2)