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}}== |