Sorting algorithms/Bogosort: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: compressed assignment statements. -- ~~~~)
Line 1,476:
<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 /*thisa.1 is really the 0th Berstel number... */
a.1 = 0 ; a.11= -64 ; a.21= 4096 ; a.31= 6291456
a.2= 0
a.2 = 0 ; a.12= 64 ; a.22= 40960 ; a.32= 5242880
a.3= 1
a.3 = 1 ; a.13= 256 ; a.23= 16384 ; a.33= -15728640
a.4= 2
a.4 = 2 ; a.14= 0 ; a.24= -114688 ; a.34= -27262976
a.5= 0
a.5 = 0 ; a.15= -768 ; a.25= -131072 ; a.35= 29360128
a.6= -4
a.6 = -4 ; a.16= -512 ; a.26= 262144 ; a.36= 104857600
a.7= 0
a.7 = 0 ; a.17= 2048 ; a.27= 589824 ; a.37= -16777216
a.8= 16
a.8 = 16 ; a.18= 3072 ; a.28= -393216 ; a.38= -335544320
a.9= 16
a.9 = 16 ; a.19= -4096 ; a.29= -2097152 ; a.39= -184549376
a.10= -32
a.10= -32 ; a.20= -12288 ; a.30= -262144 ; a.40= 905969664
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.*/
Line 1,523 ⟶ 1,494:
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 /*forever*/
parse value a.n a.m with a.m a.n /*swap 2 random nums*/
iterate bogo
end /*k*/
a.2= end 0/*j*/
 
end /*j*/
 
leave
end /*bogo*/
 
say 'number of bogo sorts performed =' bogo-1
call tell ' bogoed'
exit /*stick a fork in it, we're done.*/
exit
/*──────────────────────────────────TELL subroutine─────────────────────*/
tell: say; say center(arg(1),40,'-')
 
do j=1 to size
tell: say
say arg(1) 'element'right(j,length(size))'='right(a.j,20)
say center(arg(1),40,'-')
end end /*j*/
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----------------
un-bogoed element 1= 0
un-bogoed element 2= 0
Line 1,596 ⟶ 1,566:
un-bogoed element40= 905969664
 
number of bogo sorts performed = 36522344
 
─────────────── bogoed────────────────
---------------- bogoed----------------
bogoed element 1= -335544320
bogoed element 2= -184549376
bogoed element 3= -27262976
bogoed element 4= -16777216
bogoed element 5= -15728640
bogoed element 6= -2097152
bogoed element 7= -393216
bogoed element 8= -262144
bogoed element 9= -131072
bogoed element10= -114688
bogoed element11= -12288
bogoed element12= -4096
bogoed element13= -768
bogoed element14= -512
bogoed element15= -64
bogoed element16= -32
bogoed element17= -4
bogoed element18= 0
bogoed element19= 0
bogoed element20= 0
bogoed element21= 0
bogoed element22= 0
bogoed element23= 1
bogoed element24= 2
bogoed element25= 16
bogoed element26= 16
bogoed element27= 64
bogoed element28= 256
bogoed element29= 2048
bogoed element30= 3072
bogoed element31= 4096
bogoed element32= 16384
bogoed element33= 40960
bogoed element34= 262144
bogoed element35= 589824
bogoed element36= 5242880
bogoed element37= 6291456
bogoed element38= 29360128
bogoed element39= 104857600
bogoed element40= 905969664
</pre>
More tests showed that: