Sorting algorithms/Bogosort: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: Added testing code)
Line 1,177: Line 1,177:
n <- c(1, 10, 9, 7, 3, 0)
n <- c(1, 10, 9, 7, 3, 0)
print(bogosort(n))</lang>
print(bogosort(n))</lang>

=={{header|REXX}}==
This is a modified bogo sort.
<br><br>
To verify the array is in order, a sequential search is performed.
<br>
When an number is found out of order, two random numbers between
the first number's position and the the position of the last number
checked are swapped.
<br>
A check is made to ensure that one number isn't being swapped with itself.
<br>
The search then starts over.
<br>
This is repeated as often as it takes to finally get the array in order.
<lang rexx>
/*REXX program to perform a type of bogo sort on an array. */

a.1= 0 /*this is really the 0th Berstel number... */
a.2= 0
a.3= 1
a.4= 2
a.5= 0
a.6= -4
a.7= 0
a.8= 16
a.9= 16
a.10= -32
a.11= -64
a.12= 64
a.13= 256
a.14= 0
a.15= -768
a.16= -512
a.17= 2048
a.18= 3072
a.19= -4096
a.20= -12288
a.21= 4096
a.22= 40960
a.23= 16384
a.24= -114688
a.25= -131072
a.26= 262144
a.27= 589824
a.28= -393216
a.29= -2097152
a.30= -262144
a.31= 6291456
a.32= 5242880
a.33= -15728640
a.34= -27262976
a.35= 29360128
a.36= 104857600
a.37= -16777216
a.38= -335544320
a.39= -184549376
a.40= 905969664

size=40 /*we have a list of two score Berstel numbers.*/
call tell 'un-bogoed'

do bogo=1

do j=1 for size
_=a.j

do k=j+1 to size
if a.k>=_ then iterate
n=random(j,k) /*we have an num out of order.get rand*/
do forever; m=random(j,k) /*get another random number.*/
if m\==n then leave /*ensure we're not swapping the same #*/
end
parse value a.n a.m with a.m a.n /*swap 2 random nums*/
iterate bogo
end /*k*/

end /*j*/

leave
end /*bogo*/

say 'number of bogo sorts performed =' bogo-1
call tell ' bogoed'
exit


tell: say center(arg(1),40,'-')
do j=1 to size
say arg(1) 'element'right(j,length(size))'='right(a.j,20)
end
say
return
</lang>
Output:
<pre style="height:30ex;overflow:scroll">
---------------un-bogoed----------------
un-bogoed element 1= 0
un-bogoed element 2= 0
un-bogoed element 3= 1
un-bogoed element 4= 2
un-bogoed element 5= 0
un-bogoed element 6= -4
un-bogoed element 7= 0
un-bogoed element 8= 16
un-bogoed element 9= 16
un-bogoed element10= -32
un-bogoed element11= -64
un-bogoed element12= 64
un-bogoed element13= 256
un-bogoed element14= 0
un-bogoed element15= -768
un-bogoed element16= -512
un-bogoed element17= 2048
un-bogoed element18= 3072
un-bogoed element19= -4096
un-bogoed element20= -12288
un-bogoed element21= 4096
un-bogoed element22= 40960
un-bogoed element23= 16384
un-bogoed element24= -114688
un-bogoed element25= -131072
un-bogoed element26= 262144
un-bogoed element27= 589824
un-bogoed element28= -393216
un-bogoed element29= -2097152
un-bogoed element30= -262144
un-bogoed element31= 6291456
un-bogoed element32= 5242880
un-bogoed element33= -15728640
un-bogoed element34= -27262976
un-bogoed element35= 29360128
un-bogoed element36= 104857600
un-bogoed element37= -16777216
un-bogoed element38= -335544320
un-bogoed element39= -184549376
un-bogoed element40= 905969664

number of bogo sorts performed = 3652
</pre>
More tests showed that:
<br><br>
<pre style="height:30ex;overflow:scroll">
number of bogo sorts performed = 2583
number of bogo sorts performed = 2376
number of bogo sorts performed = 1791
number of bogo sorts performed = 2537
number of bogo sorts performed = 1856
number of bogo sorts performed = 2339
number of bogo sorts performed = 2511
number of bogo sorts performed = 2652
number of bogo sorts performed = 1697
number of bogo sorts performed = 1782
number of bogo sorts performed = 2074
number of bogo sorts performed = 4017
number of bogo sorts performed = 2469
number of bogo sorts performed = 3707
number of bogo sorts performed = 1729
number of bogo sorts performed = 1705
number of bogo sorts performed = 4071
</pre>


=={{header|Ruby}}==
=={{header|Ruby}}==