Sorting algorithms/Bubble sort: Difference between revisions
Content added Content deleted
(Updated with a simpler example of Julia implementation) |
m (→{{header|REXX}}: changed/added comments and whitespace, changed indentations.) |
||
Line 3,320: | Line 3,320: | ||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
<lang rexx>/*REXX program sorts an array (of any items) using the bubble-sort algorithm.*/ |
<lang rexx>/*REXX program sorts an array (of any kind of items) using the bubble-sort algorithm.*/ |
||
call gen /*generate the array elements (items).*/ |
call gen /*generate the array elements (items).*/ |
||
call show 'before sort' /*show the before array elements. */ |
call show 'before sort' /*show the before array elements. */ |
||
say copies('─',79) /*show a separator line (before/after).*/ |
say copies('─', 79) /*show a separator line (before/after).*/ |
||
call bubbleSort # /*invoke the bubble sort with # items.*/ |
call bubbleSort # /*invoke the bubble sort with # items.*/ |
||
call show ' after sort' /*show the after array elements. */ |
call show ' after sort' /*show the after array elements. */ |
||
exit /*stick a fork in it, we're all done. */ |
exit /*stick a fork in it, we're all done. */ |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
|||
/*────────────────────────────────────────────────────────────────────────────*/ |
|||
bubbleSort: procedure expose @.; parse arg n /*N: number of array elements.*/ |
bubbleSort: procedure expose @.; parse arg n; m=n-1 /*N: number of array elements. */ |
||
do until ok; ok=1 /*keep sorting array until done.*/ |
|||
do j=1 for m; k=j+1; if @.j<=@.k then iterate /*Not out-of-order?*/ |
|||
_=@.j; @.j=@.k; @.k=_; ok=0 /*swap 2 elements; flag as ¬done*/ |
|||
end /*j*/ |
|||
end /*until ok*/ |
|||
⚫ | |||
⚫ | |||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
|||
done=0 /*indicate that the sorting isn't done,*/ |
|||
gen: @.=; @.1 = '---letters of the Hebrew alphabet---' ; @.13= "kaph [kaf]" |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end /*until ··· */ |
|||
⚫ | |||
return |
|||
⚫ | |||
/*────────────────────────────────────────────────────────────────────────────*/ |
|||
@.6 = 'daleth [dalet]' ; @.18= "ayin" |
|||
@.7 = 'he' ; @.19= "pe" |
|||
⚫ | |||
⚫ | |||
@. |
@.9 = 'zayin' ; @.21= "qoph [qof]" |
||
@.10= 'heth [het]' ; @.22= "resh" |
|||
@.11= 'teth [tet]' ; @.23= "shin" |
|||
@.12= 'yod' ; @.24= "taw [tav]" |
|||
do #=1 while @.#\==''; end; #=#-1 /*determine #elements in list; adjust #*/ |
|||
⚫ | |||
@.9 = 'zayin' ; @.21 = 'qoph [qof]' |
|||
⚫ | |||
@.11 = 'teth [tet]' ; @.23 = 'shin' |
|||
@.12 = 'yod' ; @.24 = 'taw [tav]' |
|||
do #=1 while @.#\==''; end; #=#-1 /*find how many elements in list.*/ |
|||
w=length(#) /*the maximum width of any index.*/ |
|||
return |
return |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
|||
/*────────────────────────────────────────────────────────────────────────────*/ |
|||
show: do j=1 for #; |
show: w=length(#); do j=1 for #; say 'element' right(j,w) arg(1)":" @.j; end; return</lang> |
||
'''output''' when using the internal array list: |
'''output''' when using the internal array list: |
||
<pre style="height:30ex"> |
<pre style="height:30ex"> |