Instruções
Algoritmos de ordenação/Bogosort
Faça a ordenação Bogosort de uma lista de números.
O Bogosort simplesmente embaralha uma coleção aleatoriamente até que ela fica ordenada.
O "Bogosort" é um algoritmo perversamente ineficaz, que só é usado como uma piada interna.
Seu tempo médio de execução é O(n!) porque a chance de qualquer embaralhamento de um conjunto terminar em ordem classificada é cerca de uma em *n* fatorial, e o pior caso é infinito já que não há garantia de que um embaralhamento aleatório produzirá alguma vez uma sequência ordenada.
O melhor caso é O(n), uma vez que um único passo através dos elementos pode bastar para ordená-los.
Pseudocódigo:
<pre><b>while not</b> InOrder(list) <b>do</b>
Shuffle(list)
<b>done</b>
</pre>
O que fazer:
Testes:
- `bogosort` deve ser uma função.
- `bogosort([25, 32, 12, 7, 20])` deve retornar um array.
- `bogosort([25, 32, 12, 7, 20])` deve retornar `[7, 12, 20, 25, 32]`.
- `bogosort([38, 45, 35, 8, 13])` deve retornar `[8, 13, 35, 38, 45]`.
- `bogosort([43, 36, 20, 34, 24])` deve retornar `[20, 24, 34, 36, 43]`.
- `bogosort([12, 33, 26, 18, 1, 16, 38])` deve retornar `[1, 12, 16, 18, 26, 33, 38]`.
- `bogosort([3, 39, 48, 16, 1, 4, 29])` deve retornar `[1, 3, 4, 16, 29, 39, 48]`.
Console