Bozosort
Origem: Desciclopédia, a enciclopédia livre de conteúdo.
Eu utilizei ele para por em ordem alfabética minha lista de piadas sem graça ![]()
Bozo sobre BozoSort
Se eu pudesse eu ordenarra MIL ![]()
Jeremias sobre seu algoritmo de ordenação favorito
Ora puix, é o jeito maix rápido di ordenaire uma sequencia! ![]()
Pedro Alvares Cabral sobre BozoSort
Ham? O Bozo tá com Sorte? Ahh, que bom, mais um sortudo assistindo ao programa! ![]()
Carla Perez sobre BozoSort
Não é mais eficiente que minha maneira de ordenar: Eu apenas olho para os dados e eles se ordenam sozinhos ![]()
Chuck Norris comparando ChuckSort com BozoSort
Tabela de conteúdo |
[editar] O BozoSort
Com os avanços da Programação orientada ao Atrito, tornando-se este um paradigma conceituado mundialmente como o mais eficiente dos dias de hoje - aonde precisamos de eficiência e assertividade, surgiu então um algoritmo de ordenação que segue à risca o paradigma. Este paradigma, o BogoSort, BozoSort, BoboSort, ou ainda TocomSort(de acordo com os espertalhões da Wikipedia, e isso é sério, veja ligação externa).
De acordo com Jargon File mignon, a eficiência do algoritmo se baseia na idéia de um eficiente método utilizado por jogadores de truco para ordenarem seus baralhos. A técnica milenar tem por idéia você embaralhar o baralho, e de tempo em tempo conferir se as cartas estão em ordem. O processo se repete até que finalmente o baralho esteja ordenado.
Além de organizar eficientemente as cartas, percorrendo no máximo 1,99 * pow(10,2019834712093847109283471029384721093847102983740192837409128347091823740912837409) vezes todo o baralho, o método ajuda você a saber se poderá acertar na mega-sena pois se você conseguir ordenar 40 cartas em menos de cinco milênios com o método, jogue na mega-sena: você está com sorte!!
[editar] BozoSort e Java
Atualmente a Sun MicroPOGSystems, empresa responsabilizada que criou o Java, é uma das maiores difusoras do algoritmo. Um exemplo disso é que ela possui internamente, na API do Java, todas as ordenações feitas através do algoritmo.
Quando carregamos um programa em Java, como aqueles que levam 18 horas dias meses para carregar, percebemos que internamente a JVM está ordenando sabe-se lá o que.
Recentemente a Sun publicou o código fonte do algoritmo de ordenação implementado em Java, para que outros idiotas programadores Java pudessem incrementar eficiência em seus programas. O código segue abaixo:
class BozoSortAlgorithm extends SortAlgorithm {
void sort(int a[]) throws Exception {
boolean sorted = false;
while (!sorted) {
int index1 = Randomize(a.length);
int index2 = Randomize(a.length);
int temp = a[index2];
a[index2] = a[index1];
a[index1] = temp;
compex(index1, index2);
pause();
// Is a[] sorted?
sorted = true;
for (int i = 1; i < a.length; i++) {
if (a[i-1] > a[i]) {
compex(i, i-1);
pause();
sorted = false;
break;
} // end if
} // end for
} // end while
} // end sort
private int Randomize( int range ) {
double rawResult;
rawResult = Math.random();
return (int) (rawResult * range);
}
} // end BozoSortAlgorithm
[editar] Outras Implementações
O BozoSort foi também implementado em uma série de outras linguagens.
[editar] Python
Veja como Python possui mecanismos muito piores que os do Java, que tornam o código do BozoSort em Python muito maior e praticamente ilegível:
from random import shuffle
def bogosort(seq):
como_deve_ficar = sorted(seq)
while seq != como_deve_ficar:
shuffle(seq)
[editar] C++
Como todos sabemos que C++ é bem mais complicado que Java, o código fica assim:
#include <algorithm>
#include <vector>
template<class T>
void bogosort(std::vector<T>& array)
{
while (! is_sorted(array))
std::random_shuffle(array.begin(), array.end());
}
template<class T>
bool is_sorted(const std::vector<T>& array)
{
for (typename std::vector<T>::size_type i = 1; i < array.size(); ++i)
if (array[i] < array[i-1]) return false;
return true;
}
[editar] Pascal
Veja agora em Pascal, linguagem utilizada no Delphi, aquela que todo mundo diz que é muito simples de entender:
program bogosort (input, output);
const max=10; {*Tamanho do vetor *}
type vetor=array[1..max] of integer;
var lista, lista1: vetor;
i: integer;
j: boolean;
pos: integer;
function teste(var proto: vetor): boolean; {*Verifica se o vetor NÃO está ordenado.*}
var i: integer;
begin
teste:=true;
for i:=2 to max do
if (proto[i]<proto[i-1]) then
break;
if (i=max) and (proto[max]>=proto[max-1]) then
teste:=false;
end;
begin
randomize; {*Inicializa o gerador de numeros aleatórios *}
writeln('Escreva abaixo os ', max,' elementos do vetor:');
for i:=1 to max do
begin
read(lista[i]);
lista1[i]:=lista[i];
end;
for i:=1 to max do {*Escreve o vetor recebido *}
write(lista1[i],' ');
writeln;
while teste(lista1) do {*Enquanto o vetor nao esta ordenado...*}
begin
j:=true;
for i:=1 to max do {*Inicializa o vetor auxiliar *}
lista1[i]:=0;
for i:=1 to max do {* Este loop preenche aleatoriamente o vetor auxiliar *}
begin
j:=true;
while j do {* Este while garante que nenhum dado será sobrescrito *}
begin
pos:= random(max)+1; {* Gera posição aleatória *}
if lista1[pos]=0 then {*Garante que a posição não está ocupada *}
begin
lista1[pos]:=lista[i];
j:=false;
end;
end;
end;
for i:=1 to max do {* Imprime na tela a tentativa *}
write(lista1[i],' ');
writeln;
end;
write('A LISTA FOI ORDENADA!');
end.
[editar] Perl
Veja em Perl, que é uma linguagem que veio para trazer clareza à programação:
use List::Util qw(shuffle);
sub bogosort{
my @a=@_;
my @sorted=sort @a;
while("@a" ne "@sorted"){
@a=shuffle(@a);
}
return @a;
}
[editar] Portugol
funcao ordena(lista)
enquanto nao esta_ordenado(lista) faca ordena_aleatoriamente(lista) fimenquanto
| Este artigo é uma piada de computeiro!
Caso não entenda, aperte Ctrl+Alt+Del duas vezes o mais rápido possível. |



