How to find the median value of a vector of floating-point numbers in C++

1 Answer

0 votes
#include <algorithm>
#include <iostream>
#include <vector>

double median(std::vector<double> v) {
    // Step 1: sort a *copy* of the vector
    std::sort(v.begin(), v.end());

    size_t n = v.size();
    size_t mid = n / 2;

    // Step 2: odd or even number of elements
    if (n % 2 == 1) {
        return v[mid];  // middle element
    } else {
        return (v[mid - 1] + v[mid]) / 2.0;  // average of two middle elements
    }
}

int main() {
    std::vector<double> data = {3.5, 1.2, 9.8, 4.4, 2.1};

    std::cout << "Median: " << median(data) << "\n";
}



/*
run:

Median: 3.5

*/

 



answered May 5 by avibootz
...