Sorting algorithms/Bogosort: Difference between revisions

Content added Content deleted
(Added Scala)
(Added Oz.)
Line 884: Line 884:
<lang octave>n = [ 1, 10, 9, 7, 3, 0 ];
<lang octave>n = [ 1, 10, 9, 7, 3, 0 ];
disp(bogosort(n));</lang>
disp(bogosort(n));</lang>

=={{header|Oz}}==
We use an array because that made most sense for the Knuth Shuffle task. Usually you would use lists for stuff like this in Oz.

<lang oz>declare
proc {BogoSort Arr}
for while:{Not {InOrder Arr}} do
{Shuffle Arr}
end
end

fun {InOrder Arr}
for I in {Array.low Arr}+1..{Array.high Arr}
return:Return default:true
do
if Arr.(I-1) > Arr.I then {Return false} end
end
end

proc {Shuffle Arr}
Low = {Array.low Arr}
High = {Array.high Arr}
in
for I in High..Low;~1 do
J = Low + {OS.rand} mod (I - Low + 1)
OldI = Arr.I
in
Arr.I := Arr.J
Arr.J := OldI
end
end

X = {Tuple.toArray unit(3 1 4 1 5 9 2 6 5)}
in
{BogoSort X}
{Show {Array.toRecord unit X}}</lang>


=={{header|Perl}}==
=={{header|Perl}}==