Den Medianwert eines Arrays finden?

8

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?

    
Steffan Harris 11.09.2010, 17:33
quelle

8 Antworten

21

Angenommen, das Array x ist sortiert und hat die Länge n :

Wenn n ungerade ist, dann ist der Median x [(n-1) / 2].
Wenn n gerade ist, ist der Median (x [n / 2] + x [(n / 2) -1]) / 2.

    
Turtle 11.09.2010, 17:42
quelle
6

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

%Vor%

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

deklarieren %Vor%

Dann müssen Sie das Array mithilfe von Arrays # sortieren

%Vor%     
Aniket Kulkarni 08.11.2013 07:14
quelle
4

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:

Colin Hebert 11.09.2010 17:36
quelle
2

In C ++ können Sie std::nth_element ; siehe Ссылка .

    
Oliver Charlesworth 11.09.2010 17:36
quelle
1
%Vor%     
Kirill V. Lyadvinsky 11.09.2010 17:35
quelle
0

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.

    
Matthew 19.06.2013 19:37
quelle
0

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.

%Vor%

Der Code erzeugt die folgenden Ordnungsstatistiken für diese Eingabearrays:

%Vor%     
quantum 26.02.2017 06:24
quelle
0

Mach es in einer Linie wie ein Profi:

%Vor%

wird in double umgewandelt, wenn Sie double usw. erwarten.

    
i_use_the_internet 11.11.2017 20:56
quelle

Tags und Links