Ich habe mich gefragt, ob es möglich ist, den Medianwert eines Arrays zu finden? Angenommen, ich habe ein Array der Größe neun. Wäre es möglich, den mittleren Schlitz dieses Arrays zu finden?
Wenn Sie eine externe Bibliothek verwenden möchten, verwenden Sie Apache Commons Math Bibliothek Berechne das Median .
Weitere Methoden und Anwendungen finden Sie in der API-Dokumentation
Im Programm berechnen
Im Allgemeinen wird der Median anhand der folgenden zwei Formeln berechnet, die hier angegeben sind
Wenn n ungerade ist, dann Median (M) = Wert von ((n + 1) / 2) th Begriff.
Wenn n gerade ist, dann ist Median (M) = Wert von [((n) / 2) th Gegenstandsterm + ((n) / 2 + 1) th Gegenstand Begriff] / 2
Es ist sehr einfach, da Sie 9 Elemente (ungerade Zahl) haben.
Finde das mittlere Element eines Arrays.
In Ihrem Programm können Sie Array
Dann müssen Sie das Array mithilfe von Arrays # sortieren
%Vor%In Java:
%Vor%oder
%Vor%in einer Zeile.
Das ist möglich, weil Java-Arrays eine feste Größe haben.
Hinweis: 3/2 == 1
Ressourcen:
Die obige Java-Antwort funktioniert nur, wenn es eine ungerade Anzahl von Zahlen gibt. Hier ist die Antwort auf die Lösung:
%Vor%Und beachten Sie, dass dies ein Proof of Concept ist und aus der Ferne. Wenn Sie denken, dass Sie es kompakter oder weniger intensiv machen können, gehen Sie gleich weiter. Bitte kritisieren Sie es nicht.
Es gibt noch eine Alternative - im Allgemeinen schlagen die Vorschläge hier entweder vor, das Array zu sortieren, dann den Median aus einem solchen Array zu nehmen oder sich auf eine (externe) Bibliothekslösung zu verlassen. Schnellste Sortieralgorithmen sind heute im Durchschnitt linear, aber für die Zwecke der Mittelwertberechnung ist es besser, dies zu tun.
Der schnellste Algorithmus zur Berechnung des Medians aus einem unsortierten Array ist QuickSelect , das im Durchschnitt den Medianwert in der Zeit findet proportional zu O (N). Der Algorithmus nimmt Array als Argument zusammen mit dem int-Wert k
(die Ordnungsstatistik, d.h. das k-te kleinste Element in dem Array). Der Wert von k
ist in diesem Fall einfach N / 2, wobei N die Array-Länge ist.
Die Implementierung ist recht schwierig, aber hier ist ein Beispiel, das auf Comparable<T>
interface und Collections.shuffle()
ohne externe Abhängigkeiten angewiesen ist.
Der Code erzeugt die folgenden Ordnungsstatistiken für diese Eingabearrays:
%Vor%Mach es in einer Linie wie ein Profi:
%Vor% wird in double
umgewandelt, wenn Sie double
usw. erwarten.