Sorting algorithms/Bogosort: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: compressed assignment statements. -- ~~~~) |
|||
Line 1,476: | Line 1,476: | ||
<br>The search then starts over. |
<br>The search then starts over. |
||
<br>This is repeated as often as it takes to finally get the array in order. |
<br>This is repeated as often as it takes to finally get the array in order. |
||
<lang rexx>/*REXX program |
<lang rexx>/*REXX program;to perform a type of bogo sort on an array. */ |
||
/*a.1 is really the 0th Berstel number... */ |
|||
a.1 = 0 ; a.11= -64 ; a.21= 4096 ; a.31= 6291456 |
|||
⚫ | |||
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.*/ |
size=40 /*we have a list of two score Berstel numbers.*/ |
||
Line 1,523: | Line 1,494: | ||
do bogo=1 |
do bogo=1 |
||
do j=1 for size |
do j=1 for size |
||
_=a.j |
_=a.j |
||
do k=j+1 to size |
do k=j+1 to size |
||
if a.k>=_ then iterate |
if a.k>=_ then iterate |
||
n=random(j,k) /*we have an num out of order.get rand*/ |
n=random(j,k) /*we have an num out of order.get rand*/ |
||
do forever; m=random(j,k) /*get another random number.*/ |
do forever; m=random(j,k) /*get another random number.*/ |
||
if m\==n then leave |
if m\==n then leave /*ensure we're not swapping the same #*/ |
||
end |
end /*forever*/ |
||
parse value a.n a.m with a.m a.n /*swap 2 random nums*/ |
parse value a.n a.m with a.m a.n /*swap 2 random nums*/ |
||
iterate bogo |
iterate bogo |
||
end /*k*/ |
end /*k*/ |
||
⚫ | |||
⚫ | |||
leave |
leave |
||
end /*bogo*/ |
end /*bogo*/ |
||
say 'number of bogo sorts performed =' bogo-1 |
say 'number of bogo sorts performed =' bogo-1 |
||
call tell ' bogoed' |
call tell ' bogoed' |
||
exit /*stick a fork in it, we're done.*/ |
|||
exit |
|||
/*──────────────────────────────────TELL subroutine─────────────────────*/ |
|||
⚫ | |||
⚫ | |||
tell: say |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end |
|||
say |
say |
||
return</lang> |
return</lang> |
||
'''output''' |
'''output''' |
||
<pre style="height:30ex;overflow:scroll"> |
<pre style="height:30ex;overflow:scroll"> |
||
───────────────un-bogoed──────────────── |
|||
---------------un-bogoed---------------- |
|||
un-bogoed element 1= 0 |
un-bogoed element 1= 0 |
||
un-bogoed element 2= 0 |
un-bogoed element 2= 0 |
||
Line 1,596: | Line 1,566: | ||
un-bogoed element40= 905969664 |
un-bogoed element40= 905969664 |
||
number of bogo sorts performed = |
number of bogo sorts performed = 2344 |
||
─────────────── bogoed──────────────── |
|||
---------------- bogoed---------------- |
|||
bogoed element 1= -335544320 |
bogoed element 1= -335544320 |
||
bogoed element 2= -184549376 |
bogoed element 2= -184549376 |
||
bogoed element 3= -27262976 |
bogoed element 3= -27262976 |
||
bogoed element 4= -16777216 |
bogoed element 4= -16777216 |
||
bogoed element 5= -15728640 |
bogoed element 5= -15728640 |
||
bogoed element 6= -2097152 |
bogoed element 6= -2097152 |
||
bogoed element 7= -393216 |
bogoed element 7= -393216 |
||
bogoed element 8= -262144 |
bogoed element 8= -262144 |
||
bogoed element 9= -131072 |
bogoed element 9= -131072 |
||
bogoed element10= -114688 |
bogoed element10= -114688 |
||
bogoed element11= -12288 |
bogoed element11= -12288 |
||
bogoed element12= -4096 |
bogoed element12= -4096 |
||
bogoed element13= -768 |
bogoed element13= -768 |
||
bogoed element14= -512 |
bogoed element14= -512 |
||
bogoed element15= -64 |
bogoed element15= -64 |
||
bogoed element16= -32 |
bogoed element16= -32 |
||
bogoed element17= -4 |
bogoed element17= -4 |
||
bogoed element18= 0 |
bogoed element18= 0 |
||
bogoed element19= 0 |
bogoed element19= 0 |
||
bogoed element20= 0 |
bogoed element20= 0 |
||
bogoed element21= 0 |
bogoed element21= 0 |
||
bogoed element22= 0 |
bogoed element22= 0 |
||
bogoed element23= 1 |
bogoed element23= 1 |
||
bogoed element24= 2 |
bogoed element24= 2 |
||
bogoed element25= 16 |
bogoed element25= 16 |
||
bogoed element26= 16 |
bogoed element26= 16 |
||
bogoed element27= 64 |
bogoed element27= 64 |
||
bogoed element28= 256 |
bogoed element28= 256 |
||
bogoed element29= 2048 |
bogoed element29= 2048 |
||
bogoed element30= 3072 |
bogoed element30= 3072 |
||
bogoed element31= 4096 |
bogoed element31= 4096 |
||
bogoed element32= 16384 |
bogoed element32= 16384 |
||
bogoed element33= 40960 |
bogoed element33= 40960 |
||
bogoed element34= 262144 |
bogoed element34= 262144 |
||
bogoed element35= 589824 |
bogoed element35= 589824 |
||
bogoed element36= 5242880 |
bogoed element36= 5242880 |
||
bogoed element37= 6291456 |
bogoed element37= 6291456 |
||
bogoed element38= 29360128 |
bogoed element38= 29360128 |
||
bogoed element39= 104857600 |
bogoed element39= 104857600 |
||
bogoed element40= 905969664 |
bogoed element40= 905969664 |
||
</pre> |
</pre> |
||
More tests showed that: |
More tests showed that: |