The middle of a set of readings
A latency report quotes the median rather than the mean, because one slow request should not move the headline number.
- Sort first — the readings arrive in whatever order they were logged.
- An odd count has a single middle value.
- An even count takes the average of the two in the middle, which may be a half.
- No readings at all gives 0.
median_value(values: list<int>) → float
Where you start
def median_value(values: list[int]) -> float:
Worked examples
| Call | Result |
|---|---|
median_value([3, 1, 2]) | 2.0 |
median_value([1, 2, 3, 4]) | 2.5 |
median_value([7]) | 7.0 |
median_value([]) | 0.0 |
Hint
After sorting, the two middles for an even count sit at n/2 - 1 and n/2.
Reference solution in Python
def median_value(values: list[int]) -> float:
if not values:
return 0.0
s = sorted(values)
n = len(s)
mid = n // 2
return float(s[mid]) if n % 2 == 1 else (s[mid - 1] + s[mid]) / 2