Jump to content

Sorting algorithms/Counting sort: Difference between revisions

m
→‎{{header|REXX}}: changed whitespace and comments. enclosed list in quotes.
m (→‎version 2: added other reasons for improvement.)
m (→‎{{header|REXX}}: changed whitespace and comments. enclosed list in quotes.)
Line 2,717:
===version 1===
<lang rexx>/*REXX pgm sorts an array of integers (can be negative) using the count─sort algorithm.*/
$= '1 3 6 2 7 13 20 12 21 11 22 10 23 9 24 8 25 43 62 42 63 41 18 42 17 43 16 44 15 45 14 46 79 113 78 114 77 39 78 38'
#= words($); w= length(#); _!.= 0 /* [↑] a list of some Recaman numbers.*/
m= 01; LO= word($, 13); HI= LO /*M: max width of any numberinteger in @. */
do ij=1 for #; z= word($, ij)+0; @.ij= z; m= max(m, length(z) ) /*get from $ list. */
_ !.z= _!.z + 1; LO= min(LO, z); HI= max(HI, z) /*find the LO &and HI.*/
end /*ij*/
/*W: max index width for the @. array*/
call show 'before sort: ' /*show the before array elements. */
say copies('', 55) /*show a separator line (before/after).*/
call countSort # /*sort a number of entries of @. array.*/
call show ' after sort: ' /*show the after array elements. */
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
countSort: parse arg N; x= 1; do k=LO to HI; do x=x for _!.k; @.x= k; end /*x*/
end /*k*/
return
Cookies help us deliver our services. By using our services, you agree to our use of cookies.