C# :: Aufgabe #343 :: Lösung #1
1 Lösung
#343
Median zweier zusammengefügter Arrays
Fortgeschrittener - C#
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ß
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ß
#1
von JKooP (18090 Punkte)
- 03.01.2021 um 11:55 Uhr
NET 5.x; C# 9.x
C#-Code
using System; using System.Linq; namespace CS_NET5_Median_OF_2_SORTED_ARRAYS { class Program { static void Main(string[] args) { var n1 = new int[] { -1, 1, 2, 3, 4 }; var n2 = new int[] { -1, 0, 1, 2, 5 }; Median m = new(n1, n2); Console.WriteLine(m); } } public record Median(int[] Array1, int[] Array2) { private int[] SortedArray => Array1.Concat(Array2).OrderBy(x => x).ToArray(); public double MedianOfSortedArray => SortedArray.Length switch { 0 => 0, var a when a % 2 != 0 => SortedArray[Center(SortedArray)], _ => (SortedArray[Center(SortedArray) - 1] + SortedArray[Center(SortedArray)]) / 2.0 }; private static int Center(int[] n) => (int)Math.Floor(n.Length / 2.0); public override string ToString() => $"Array: {string.Join(", ", SortedArray)}\nMedian: {MedianOfSortedArray}"; } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1