Sorting algorithms/Bogosort: Difference between revisions

Content added Content deleted
(oberon-2)
Line 142: Line 142:
}
}
}</java>
}</java>

=={{header|Oberon-2}}==
Works with Oxford Oberon-2 Compiler.

<pre>
MODULE Bogo;

IMPORT Out, Random;

VAR a: ARRAY 10 OF INTEGER;

PROCEDURE Init;
VAR i: INTEGER;
BEGIN
FOR i := 0 TO LEN(a) - 1 DO
a[i] := i + 1;
END;
END Init;

PROCEDURE Sorted(VAR a: ARRAY OF INTEGER): BOOLEAN;
VAR i: INTEGER;
BEGIN
IF LEN(a) <= 1 THEN
RETURN TRUE;
END;
FOR i := 1 TO LEN(a) - 1 DO
IF (a[i] < a[i - 1]) THEN
RETURN FALSE;
END;
END;
RETURN TRUE;
END Sorted;

PROCEDURE PrintArray(VAR a: ARRAY OF INTEGER);
VAR i: INTEGER;
BEGIN
FOR i := 0 TO LEN(a) - 1 DO
Out.Int(a[i], 0);
Out.String(" ");
END;
END PrintArray;

PROCEDURE Shuffle*(VAR a: ARRAY OF INTEGER);
VAR n, t, r: INTEGER;
BEGIN
FOR n := 0 TO LEN(a) - 1 DO
r := Random.Roll(n + 1);
t := a[n];
a[n] := a[r];
a[r] := t;
END;
END Shuffle;

BEGIN
Init;
Shuffle(a);
WHILE ~Sorted(a) DO
Shuffle(a);
END;
PrintArray(a);
Out.Ln;
END Bogo.
</pre>

Init initializes the array as 1..10, then it is shuffled, and then the while loop continually shuffles until Sorted returns true.


=={{header|OCaml}}==
=={{header|OCaml}}==