9
votes

Fonction médiane dans la bibliothèque de mathématiques C?

Y a-t-il une fonction mathématique dans la bibliothèque C pour calculer la médiane des numéros de 'N'?

c

0 commentaires

7 Réponses :


0
votes

Pour obtenir la médiane, vous pouvez trier la gamme de chiffres et prendre:

1) Dans le cas où le nombre d'éléments est impair - le nombre au milieu

2) Dans le cas où le nombre d'éléments est même - la moyenne de deux nombres au milieu


2 commentaires

@Eli: la simplicité a souvent attesté l'efficacité et j'ai un intestin de gut que c'est ce que veut


@Catwalk: assez juste, mais il serait alors prudent de préciser explicitement dans votre réponse que c'est la solution simple et non efficace.



7
votes

0 commentaires

1
votes

Non, il n'y a pas de fonction médiane dans la bibliothèque C standard C.


0 commentaires

3
votes

Non, il n'y a pas de ce type dans la bibliothèque C standard C.

Cependant, vous pouvez en implémenter un (ou trouver un code sûrement en ligne). Un algorithme O (n) efficace pour trouver une médiane s'appelle «algorithme de sélection» et est lié à Quicksort. Tout lire à propos de ici .


0 commentaires

4
votes

Pour calculer la médiane à l'aide de la bibliothèque Standard C, utilisez la fonction de bibliothèque standard qsort () puis prenez l'élément moyen. Si le tableau est a et a n , alors: xxx

Vous devez écrire votre propre comparer Fonction qui dépendra du type d'élément de tableau. Pour plus de détails, consultez la page d'homme pour qsort ou le chercher dans l'index de Kernighan et de Ritchie.


0 commentaires

9
votes

Méthode conventionnelle: (non recommandé si vous travaillez sur le traitement de l'image) xxx

Cependant, sont deux fonctions pour calculer la médiane le moyen le plus rapide sans tri des candidats. Les éléments suivants sont au moins 600% plus rapides que les moyens conventionnels de calculer la médiane. Malheureusement, ils ne font pas partie de la bibliothèque standard C ou de C ++ STL.

Méthodes plus rapides: xxx

in c ++ je fais ces Fonctions modèles et si les chiffres augmentent ou diminuent (une direction) pour de telles fonctions utilisent int8_fast_t; int16_fast_t; int32_fast_t; intz_fast_t; uint8_fast_t; uint16_fast_t; Types au lieu de types réguliers [STDINT.H] (E.G. uint16_t; uint32_t, etc.)


1 commentaires

Le code ci-dessus échouera en cas de même nombre d'éléments (il ne prendra pas la moyenne des 2 éléments moyens).



1
votes

Qu'en est-il de std :: NTH_Element ? Si je comprends bien la nature de la médiane, cela vous en donnerait un pour un nombre impair d'éléments.


0 commentaires