Skip to content

Latest commit

 

History

History
50 lines (37 loc) · 1.08 KB

bogosort.livemd

File metadata and controls

50 lines (37 loc) · 1.08 KB

Bogosort

What is Bogosort?

"In computer science, bogosort[1][2] (also known as permutation sort, stupid sort,[3] slowsort or bozosort) is a sorting algorithm based on the generate and test paradigm." Source: Wikipedia.

Section

defmodule Bogosort do
  @spec sort(list(any())) :: list(any())
  def sort(list) do
    new_list = Enum.shuffle(list)

    if is_sorted(new_list) do
      new_list
    else
      sort(list)
    end
  end

  defp is_sorted([_element]), do: true
  defp is_sorted([element1, element2 | _]) when element1 > element2, do: false
  defp is_sorted([_element1, element2 | rest]), do: is_sorted([element2 | rest])
end

Testing Bogosort

Bogosort.sort([1, 2, 3])
Bogosort.sort([1034, 1145, 1163, 1199])
random_list =
  for _ <- 1..11 do
    Enum.shuffle(1..10000)
    |> Enum.take(1)
  end

Bogosort.sort(random_list)

Thanks

Thanks to Manuel Rubio for mentioning Bogosort in his newsletter.