Təsadüfi nizamlama

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç

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.

Pascal dilində təsviri

[redaktə | mənbəni redaktə et]
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>

Java dilində təsviri

[redaktə | mənbəni redaktə et]
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;
        }
    }
}

Xarici Keçidlər

[redaktə | mənbəni redaktə et]

Digər Proqramlaşdırma dillərində təsviri