Python :: Aufgabe #304
3 Lösungen

Median zweier zusammengefügter Arrays
Fortgeschrittener - Python
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ß
Lösungen:

test_data = [ [[1, 3], [2]], [[2, 4], [1, 3]], [[0, 0], [0, 0]], [[], [4]], [[3], []], [[], []], [[-4, 4], [-2, 1]] ] def median(list_of_arrays): combined_array = [] print('arrays = ', end='') for array in list_of_arrays: print(f'{array} ', end='') combined_array += array combined_array.sort() print(f'\nmerged sorted array = {combined_array}') if not combined_array: median = 0 elif len(combined_array) == 1: median = combined_array[0] elif len(combined_array) % 2 == 1: median = combined_array[len(combined_array) // 2] else: median = (combined_array[len(combined_array) // 2 - 1] + combined_array[len(combined_array) // 2]) / 2 print(f'median = {median}\n') for array in test_data: median(array)

from math import * from statistics import* # Funktionen def eingabe(l): merged_l = [] if type(l[0]) is list: for i in range(len(l)): merged_l.extend(l[i]) return merged_l else: return l def median_kompliziert(a): a.sort() if (len(a) % 2) != 0: med = a[floor(len(a) / 2)] else: med = (a[int(len(a) / 2)] + a[int((len(a) / 2) - 1)]) / 2 return med def median_einfach(a): return median(a) # Testdaten arr1 = [5, 99, 1, 3, 4, 7, 123] arr2 = [2, 8, 5, 68] arr3 = [3, 4, 5, 6, 7, 785, 23423] arr4 = [99999, 845, 525, -987] # Aufruf der Funktionen zur Kontrolle x = eingabe(arr1) y = eingabe([arr1, arr2]) z = eingabe([arr1, arr2, arr3, arr4]) print(x, median_kompliziert(x), median_einfach(x)) print(y, median_kompliziert(y), median_einfach(y)) print(z, median_kompliziert(z), median_einfach(z))

arr1 = [1, 2, 3] arr2 = [4, 5, 6] def median(): master_arr = arr1 + arr2 master_arr.sort() if master_arr == []: print('Der Meridian ist: 0') else: laenge = len(master_arr) gerade_ungerade = laenge/2 gerade_ungerade = str(gerade_ungerade).find('.5') if gerade_ungerade == -1: meridian2 = laenge // 2 meridian1 = meridian2 - 1 ergebnis = (master_arr[meridian1] + master_arr[meridian2]) / 2 print('Der Meridian ist:', ergebnis) else: ergebnis = master_arr[int(laenge/2 - 0.5)] print('Der Meridian ist:', ergebnis) median()