Median-Funktion in der C-Math-Bibliothek?

7

Gibt es irgendeine mathematische Funktion in C-Bibliothek, um MEDIAN von 'n' Zahlen zu berechnen?

    
Jitesh Dani 25.12.2009, 13:31
quelle

7 Antworten

7

Hier geht's .

    
Jonathan Feinberg 25.12.2009 13:39
quelle
7

Konventionelle Methode: (nicht empfohlen, wenn Sie an der Bildverarbeitung arbeiten)

%Vor%

Es gibt jedoch zwei Funktionen, um den Medianwert am schnellsten zu berechnen, ohne das Array der Kandidaten zu sortieren. Die folgenden sind mindestens 600% schneller als herkömmliche Methoden zur Berechnung des Medians. Leider sind sie kein Teil von C Standard Library oder C ++ STL.

Schnellere Methoden:

%Vor%

In C ++ mache ich diese Template-Funktionen und wenn die Zahlen für solche Funktionen größer oder kleiner werden (eine Richtung), verwende int8_fast_t; int16_fast_t; int32_fast_t; int64_fast_t; uint8_fast_t; uint16_fast_t; Typen anstelle von regulären [stdint.h] -Typen (z. B. uint16_t; uint32_t usw.)

    
enthusiasticgeek 19.09.2011 22:07
quelle
3

Nein, in der Standard-C-Bibliothek gibt es keine solche Funktion.

Sie können jedoch einen implementieren (oder sicher Code online finden). Ein effizienter O (n) -Algorithmus zum Auffinden eines Medians wird als "Auswahlalgorithmus" bezeichnet und steht in Zusammenhang mit Quicksort. Lesen Sie alles hier .

    
Eli Bendersky 25.12.2009 15:05
quelle
2

Um den Median mit der Standard-C-Bibliothek zu berechnen, verwenden Sie die Standardbibliotheksfunktion qsort() und nehmen Sie dann das mittlere Element. Wenn das Array a und n Elemente hat, dann:

%Vor%

Sie müssen Ihre eigene compare -Funktion schreiben, die vom Typ eines Array-Elements abhängt. Für Details konsultiere die Manpage für qsort oder schaue im Index von Kernighan und Ritchie nach.

    
Norman Ramsey 26.12.2009 02:57
quelle
1

Nein, in der Standard-C-Bibliothek gibt es keine Median-Funktion.

    
Thomas Padron-McCarthy 25.12.2009 13:40
quelle
1

Was ist mit std::nth_element ? Wenn ich die Art des Median richtig verstehe, würde dies Ihnen eine für eine ungerade Anzahl von Elementen geben.

    
user1552117 21.08.2012 10:52
quelle
0

Um den Median zu erhalten, können Sie das Zahlenfeld sortieren und nehmen:

1) wenn die Anzahl der Elemente ungerade ist - die Zahl in der Mitte

2) wenn die Anzahl der Items gerade ist - der Durchschnitt zweier Zahlen in der Mitte

    
catwalk 25.12.2009 13:39
quelle

Tags und Links