Sorting algorithms/Strand sort: Difference between revisions

Added Elixir
(Added Elixir)
Line 350:
{{out}}
<pre>[-4, -3, -2, -2, -1, 0, 0, 2, 2, 3, 4, 5, 5, 5, 5]</pre>
 
=={{header|Elixir}}==
{{trans|Ruby}}
<lang elixir>defmodule Sort do
def strand_sort(args), do: strand_sort(args, [])
defp strand_sort([], result), do: result
defp strand_sort(a, result) do
{_, sublist, b} = Enum.reduce(a, {hd(a),[],[]}, fn val,{v,l1,l2} ->
if v <= val, do: {val, [val | l1], l2},
else: {v, l1, [val | l2]}
end)
strand_sort(b, :lists.merge(Enum.reverse(sublist), result))
end
end
 
IO.inspect Sort.strand_sort [7, 17, 6, 20, 20, 12, 1, 1, 9]</lang>
 
{{out}}
<pre>
[1, 1, 6, 7, 9, 12, 17, 20, 20]
</pre>
 
=={{header|Euphoria}}==
Line 652 ⟶ 674:
<pre>StrandSort[{2, 3, 7, 5, 1, 4, 7}]
{1, 2, 3, 4, 5, 7, 7}</pre>
 
=={{header|MAXScript}}==
<lang MAXScript>fn strandSort arr =
Line 992 ⟶ 1,015:
@a = strand_sort(@a);
say "After @a";</lang>
 
=={{header|Perl 6}}==
<lang perl6>sub infix:<M> (@x, @y) {
Anonymous user