Sorting algorithms/Bubble sort: Difference between revisions

Added Elixir
(Added Elixir)
Line 1,094:
Under normal circumstances, we would use the feature <code lang="eiffel">extend</code> (rather than <code lang="eiffel">put_front</code>) to add elements to the list.
This would assure that the order was maintained even as elements were added.
 
=={{header|Elixir}}==
<lang elixir>defmodule Sort do
def bubble_sort(list) when length(list)<=1, do: list
def bubble_sort(list) when is_list(list), do: bubble_sort(list, [])
def bubble_sort([x], sorted), do: [x | sorted]
def bubble_sort(list, sorted) do
{rest, [max]} = Enum.split(bubble_move(list), -1)
bubble_sort(rest, [max | sorted])
end
def bubble_move([x]), do: [x]
def bubble_move([x, y | t]) when x > y, do: [y | bubble_move([x | t])]
def bubble_move([x, y | t]) , do: [x | bubble_move([y | t])]
end
 
IO.inspect Sort.bubble_sort([3,2,1,4,5,2])</lang>
 
{{out}}
<pre>
[1, 2, 2, 3, 4, 5]
</pre>
 
=={{header|Erlang}}==
Anonymous user