Averages/Median: Difference between revisions

(→‎{{header|Erlang}}: remove unused code)
Line 1,301:
 
qs_median([]) -> error;
 
qs_median([P|List]) ->
TargetPos = length(List)/2 + 0.5,
qs_median(List, TargetPos, P, undefined).
 
qs_median([X], _, _, _) -> X;
qs_median([X,Y], 1.5, _, _) -> (X+Y)/2;
Line 1,316:
true -> P;
false ->
case (LS + 1.5) ==> TargetPos of
true -> qs_median(Smaller,TargetPos, P, undefined);
false ->
Larger = [X || X <- Tail, X >= P],
(P + qs_median(Larger, TargetPos - LS - 1, P, up))/2;
false ->
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.
Anonymous user