Təsadüfi nizamlama və ya Axmaq nizamlama - kompüter elmlərində yalnız təhsil(nümunə) məqsədilə istifadə olunan səmərəsiz nizamlama alqoritmidir.
Bir dəstə oyun kartını bu alqortim ilə nizamlamaq istəndiyində, dəstənin sıralı olub olmadığına baxılar, əgər dəstə sıralı deyilsə havaya atılaraq yerə düşən kartlar yenidən toplanır. Bu əməliyyat kartlar sıralanana qədər davam edir.
program bogosort;
const
max = 5;
type
list = array [1..max] of integer;
{ Print a list }
procedure printa(a: list);
var
i: integer;
begin
for i := 1 to max do
write(a[i], ' ');
writeln
end;
{ Knuth shuffle }
procedure shuffle(var a: list);
var
i,k,tmp: integer;
begin
for i := max downto 2 do begin
k := random(i) + 1;
if (a[i] <> a[k]) then begin
tmp := a[i]; a[i] := a[k]; a[k] := tmp
end
end
end;
{ Check for sorted list }
function sorted(a: list): boolean;
var
i: integer;
begin
sorted := True;
for i := 2 to max do
if (a[i - 1] > a[i]) then begin
sorted := False; exit
end
end;
{ Bogosort }
procedure bogo(var a: list);
var
i: integer;
begin
i := 1; randomize;
write(i,': '); printa(a);
while not sorted(a) do begin
shuffle(a);
i := i + 1; write(i,': '); printa(a)
end
end;
{ Test and display }
var
a: list;
i: integer;
begin
for i := 1 to max do
a[i] := (max + 1) - i;
bogo(a);
end.
Sample Output:
1: 5 4 3 2 1
2: 3 5 4 1 2
. . . . . .
22: 3 2 1 5 4
23: 1 2 3 4 5</pre>
public int[] BogoSort(int[] numbers)
{
Random rnd = new Random();
while(true)
{
boolean sorted = true;
for(int i = 0; i < numbers.length-1; i++)
if(numbers[i] > numbers[i+1])
sorted = false;
if (sorted)
return numbers;
for(int i = numbers.length - 1; i > 0; i--)
{
int rand = rnd.nextInt(i);
int temp = numbers[i];
numbers[i] = numbers[rand];
numbers[rand] = temp;
}
}
}
Digər Proqramlaşdırma dillərində təsviri