Averages/Median: Difference between revisions
Content added Content deleted
(→{{header|Erlang}}: remove unused code) |
(→{{header|Erlang}}: Refactor) |
||
Line 1,301: | Line 1,301: | ||
qs_median([]) -> error; |
qs_median([]) -> error; |
||
qs_median([P|List]) -> |
qs_median([P|List]) -> |
||
TargetPos = length(List)/2 + 0.5, |
TargetPos = length(List)/2 + 0.5, |
||
qs_median(List, TargetPos, P, undefined). |
qs_median(List, TargetPos, P, undefined). |
||
qs_median([X], _, _, _) -> X; |
qs_median([X], _, _, _) -> X; |
||
qs_median([X,Y], 1.5, _, _) -> (X+Y)/2; |
qs_median([X,Y], 1.5, _, _) -> (X+Y)/2; |
||
Line 1,316: | Line 1,316: | ||
true -> P; |
true -> P; |
||
false -> |
false -> |
||
case |
case LS + 1 > TargetPos of |
||
true -> |
true -> qs_median(Smaller,TargetPos, P, undefined); |
||
⚫ | |||
Larger = [X || X <- Tail, X >= P], |
Larger = [X || X <- Tail, X >= P], |
||
qs_median(Larger, TargetPos - LS - 1, P, up) |
|||
⚫ | |||
case (LS + 0.5) == TargetPos of |
|||
true -> (P + qs_median(Smaller,TargetPos - 0.5, P,undefined))/2; |
|||
false -> |
|||
case LS + 1 > TargetPos of |
|||
true -> qs_median(Smaller,TargetPos, P, undefined); |
|||
false -> |
|||
Larger = [X || X <- Tail, X >= P], |
|||
qs_median(Larger, TargetPos - LS - 1, P, up) |
|||
end |
|||
end |
|||
end |
end |
||
end. |
end. |