Calculer la Médiane des Valeurs Stockées Dans le Vecteur C++?

Je suis un étudiant en programmation, et pour un projet que je suis en train de travailler sur le, sur des choses que j'ai à faire est de calculer la valeur médiane d'un vecteur de valeurs int. Je suis pour ce faire, en utilisant uniquement la fonction de tri de la STL et le vecteur des fonctions de membre comme .begin(), .end(), et .size().

Je suis aussi censé assurez-je trouver la médiane si le vecteur a un nombre impair de valeurs ou d'un même nombre de valeurs.

Et je suis Coincé, ci-dessous, j'ai inclus ma tentative. Alors, où vais-je tort? Je vous serais reconnaissant si vous accepteriez de me donner quelques conseils ou des ressources pour aller dans la bonne direction.

Code:

int CalcMHWScore(const vector<int>& hWScores)
{
     const int DIVISOR = 2;
     double median;
     sort(hWScores.begin(), hWScores.end());
     if ((hWScores.size() % DIVISOR) == 0)
     {
         median = ((hWScores.begin() + hWScores.size()) + (hWScores.begin() + (hWScores.size() + 1))) / DIVISOR);
     }
     else 
     {
       median = ((hWScores.begin() + hWScores.size()) / DIVISOR)
     }

    return median;
}

Merci!!

  • Je ne suis pas sûr que l'utilisation d'une constante nommée pour la "2" est bien approprié.
  • Merci pour l'attraper, j'ai marqué.
  • Pour max heureux, je reformmatted votre code. J'ai aussi corrigé quelques parenthèse questions.
  • Vous aurez probablement obtenir un nombre de lignes long de message d'erreur, finalement, se référant à la "sorte" de ligne. C'est parce que le paramètre d'entrée de votre fonction est const et sort est d'essayer de modifier son contenu. Changement en passant hWScores par valeur et non par référence const.
  • dites à votre professeur sur partial_sort comme il peut être utilisé pour trouver la médiane en O(n) fois. pas besoin d'aucune de ces fantaisie bizarre/même longueur contrôles des personnes ont été suggérant.
  • Darid, à l'aide de partial_sort va toujours s'exécuter en O(n log n) de temps, vous aurez toujours besoin de comprendre que l'itérateur à utiliser pour le milieu, et vous aurez toujours besoin à la moyenne de deux valeurs intermédiaires si la longueur est la même.

InformationsquelleAutor Alex | 2010-01-22