#pragma once #include #include template double median(std::vector values) { if (values.size() == 0) { return 0.0; } size_t centerIndex = values.size() / 2; std::nth_element(values.begin(), values.begin() + centerIndex, values.end()); if (values.size() % 2 == 1) { return values[centerIndex]; } else { std::nth_element(values.begin(), values.begin() + centerIndex + 1, values.end()); return (values[centerIndex] + values[centerIndex + 1]) / 2.0; } }