Averages/Median: Difference between revisions
Content added Content deleted
(→{{header|Erlang}}: remove unused code) |
|||
Line 1,310: | Line 1,310: | ||
qs_median([P|Tail], TargetPos, P, up) when TargetPos /= 1 -> |
qs_median([P|Tail], TargetPos, P, up) when TargetPos /= 1 -> |
||
qs_median(Tail, TargetPos - 1, P, up); |
qs_median(Tail, TargetPos - 1, P, up); |
||
qs_median([P|Tail], TargetPos, P, {down, Len}) when Len /= TargetPos -> |
|||
qs_median(Tail, TargetPos, P, {down, Len-1}); |
|||
qs_median([P|Tail], TargetPos, _, _) -> |
qs_median([P|Tail], TargetPos, _, _) -> |
||
Smaller = [X || X <- Tail, X < P], |
Smaller = [X || X <- Tail, X < P], |
||
Line 1,324: | Line 1,322: | ||
false -> |
false -> |
||
case (LS + 0.5) == TargetPos of |
case (LS + 0.5) == TargetPos of |
||
true -> (P + qs_median(Smaller,TargetPos - 0.5, P, |
true -> (P + qs_median(Smaller,TargetPos - 0.5, P,undefined))/2; |
||
false -> |
false -> |
||
case LS + 1 > TargetPos of |
case LS + 1 > TargetPos of |
||
true -> qs_median(Smaller,TargetPos, P, |
true -> qs_median(Smaller,TargetPos, P, undefined); |
||
false -> |
false -> |
||
Larger = [X || X <- Tail, X >= P], |
Larger = [X || X <- Tail, X >= P], |