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,{down, LS}))/2;
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, {down, LS});
true -> qs_median(Smaller,TargetPos, P, undefined);
false ->
false ->
Larger = [X || X <- Tail, X >= P],
Larger = [X || X <- Tail, X >= P],