Retour aux défis
Facile 0 résolus 0 % de réussite

Médiane d'une liste

Trouvez la valeur centrale d'une liste après l'avoir triée.

Ce que vous allez apprendre

  • Trier une liste et trouver son milieu
  • Gérer les longueurs paires et impaires
  • Faire la moyenne des deux valeurs du milieu

Problème

Triez les valeurs par ordre croissant. Pour un nombre impair de valeurs, prenez celle du milieu. Pour un nombre pair, prenez la moyenne arithmétique des deux valeurs centrales. Ce défi n'accepte que des listes non vides.

Implémentez median_number(numbers).

Entrée

numbers : La liste non vide de valeurs.

Sortie

Retournez la médiane sous forme de nombre ; elle peut se terminer par .5.

Contraintes

1 ≤ longueur de la liste ≤ 100 000. Chaque valeur est un entier compris entre −1 000 000 000 et 1 000 000 000.

Exemples

Exemple 1
Entrée :
numbers = [2, 8, 4, 10]

Sortie attendue :
expected = 6.0
Entrée :
std::vector<long long> numbers = {2, 8, 4, 10};

Sortie attendue :
double expected = 6.0;
Entrée :
long[] numbers = new long[] {2, 8, 4, 10};

Sortie attendue :
double expected = 6.0;

Explication

L'ordre trié est 2, 4, 8, 10. Le couple central donne une moyenne de (4 + 8) / 2 = 6.

Exemple 2
Entrée :
numbers = [9, 1, 4]

Sortie attendue :
expected = 4.0
Entrée :
std::vector<long long> numbers = {9, 1, 4};

Sortie attendue :
double expected = 4.0;
Entrée :
long[] numbers = new long[] {9, 1, 4};

Sortie attendue :
double expected = 4.0;

Explication

L'ordre trié est 1, 4, 9, dont la valeur centrale est 4.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

La médiane dépend de l’ordre trié, donc ce sont les positions dans la liste triée qui comptent.

Indice 2

Après tri, prends l’élément du milieu pour une longueur impaire, ou combine les deux éléments centraux pour une longueur paire.

Indice 3

Fais attention à conserver les décimales quand tu fais la moyenne de deux valeurs centrales, car le résultat peut finir en .5.

Complexité attendue

temps O(n log n), espace supplémentaire O(n)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.