Sorting algorithms/Counting sort: Difference between revisions
Content added Content deleted
(→{{header|Julia}}: A new entry for Julia) |
m (→version 1: changed indentations, whitespace, separator, and comments, also simplified the "counting" DO loop.) |
||
Line 1,744: | Line 1,744: | ||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
===version 1=== |
===version 1=== |
||
<lang rexx>/*REXX program sorts an array using the |
<lang rexx>/*REXX program sorts an array 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($); do j=1 for # |
|||
⚫ | |||
@.j=word($,j) /*assign a Recaman # from a list.*/ |
|||
end /*j*/ /* [↑] assign 40 Recaman numbers*/ |
|||
⚫ | |||
call countSort # /*sort # entries of the @. array.*/ |
|||
call show@ ' after sort: ' /*show the after array elements.*/ |
|||
exit /*stick a fork in it, we're done.*/ |
exit /*stick a fork in it, we're done.*/ |
||
/*──────────────────────────────────COUNTSORT subroutine────────────────*/ |
/*──────────────────────────────────COUNTSORT subroutine────────────────*/ |
||
countSort: |
countSort: procedure expose @.; parse arg N; L=@.1; h=L; _.=0; x=1 |
||
⚫ | |||
do j=1 for N; z=@.j; _.z=_.z+1; end /*j*/ |
|||
⚫ | |||
⚫ | |||
x=1; do k=L to h; if _.k\==0 then do x=x for _.k |
|||
@.x=k |
|||
⚫ | |||
⚫ | |||
return |
|||
/*──────────────────────────────────GEN@ subroutine─────────────────────*/ |
|||
gen@: $=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($) |
|||
do j=1 for # /* [↓] assign 40 Recaman numbers.*/ |
|||
@.j=word($,j) /*assign a Recaman # from a list.*/ |
|||
end /*j*/ |
|||
return |
return |
||
/*──────────────────────────────────SHOW@ subroutine────────────────────*/ |
/*──────────────────────────────────SHOW@ subroutine────────────────────*/ |
||
show@: |
show@: do s=1 for #; say right("element",20) right(s,length(#)) arg(1) @.s |
||
⚫ | |||
say left('',9) "element" right(s,length(#)) arg(1)': ' @.s |
|||
⚫ | |||
end /*s*/ |
|||
⚫ | |||
return</lang> |
return</lang> |
||
'''output''' |
'''output''' |
||
<pre style="height:50ex"> |
<pre style="height:50ex"> |
||
element 1 before sort: 1 |
element 1 before sort: 1 |
||
element 2 before sort: 3 |
element 2 before sort: 3 |
||
element 3 before sort: 6 |
element 3 before sort: 6 |
||
element 4 before sort: 2 |
element 4 before sort: 2 |
||
element 5 before sort: 7 |
element 5 before sort: 7 |
||
element 6 before sort: 13 |
element 6 before sort: 13 |
||
element 7 before sort: 20 |
element 7 before sort: 20 |
||
element 8 before sort: 12 |
element 8 before sort: 12 |
||
element 9 before sort: 21 |
element 9 before sort: 21 |
||
element 10 before sort: 11 |
element 10 before sort: 11 |
||
element 11 before sort: 22 |
element 11 before sort: 22 |
||
element 12 before sort: 10 |
element 12 before sort: 10 |
||
element 13 before sort: 23 |
element 13 before sort: 23 |
||
element 14 before sort: 9 |
element 14 before sort: 9 |
||
element 15 before sort: 24 |
element 15 before sort: 24 |
||
element 16 before sort: 8 |
element 16 before sort: 8 |
||
element 17 before sort: 25 |
element 17 before sort: 25 |
||
element 18 before sort: 43 |
element 18 before sort: 43 |
||
element 19 before sort: 62 |
element 19 before sort: 62 |
||
element 20 before sort: 42 |
element 20 before sort: 42 |
||
element 21 before sort: 63 |
element 21 before sort: 63 |
||
element 22 before sort: 41 |
element 22 before sort: 41 |
||
element 23 before sort: 18 |
element 23 before sort: 18 |
||
element 24 before sort: 42 |
element 24 before sort: 42 |
||
element 25 before sort: 17 |
element 25 before sort: 17 |
||
element 26 before sort: 43 |
element 26 before sort: 43 |
||
element 27 before sort: 16 |
element 27 before sort: 16 |
||
element 28 before sort: 44 |
element 28 before sort: 44 |
||
element 29 before sort: 15 |
element 29 before sort: 15 |
||
element 30 before sort: 45 |
element 30 before sort: 45 |
||
element 31 before sort: 14 |
element 31 before sort: 14 |
||
element 32 before sort: 46 |
element 32 before sort: 46 |
||
element 33 before sort: 79 |
element 33 before sort: 79 |
||
element 34 before sort: 113 |
element 34 before sort: 113 |
||
element 35 before sort: 78 |
element 35 before sort: 78 |
||
element 36 before sort: 114 |
element 36 before sort: 114 |
||
element 37 before sort: 77 |
element 37 before sort: 77 |
||
element 38 before sort: 39 |
element 38 before sort: 39 |
||
element 39 before sort: 78 |
element 39 before sort: 78 |
||
element 40 before sort: 38 |
element 40 before sort: 38 |
||
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ |
|||
────────────────────────────────────────────────── |
|||
element 1 after sort: 1 |
element 1 after sort: 1 |
||
element 2 after sort: 2 |
element 2 after sort: 2 |
||
element 3 after sort: 3 |
element 3 after sort: 3 |
||
element 4 after sort: 6 |
element 4 after sort: 6 |
||
element 5 after sort: 7 |
element 5 after sort: 7 |
||
element 6 after sort: 8 |
element 6 after sort: 8 |
||
element 7 after sort: 9 |
element 7 after sort: 9 |
||
element 8 after sort: 10 |
element 8 after sort: 10 |
||
element 9 after sort: 11 |
element 9 after sort: 11 |
||
element 10 after sort: 12 |
element 10 after sort: 12 |
||
element 11 after sort: 13 |
element 11 after sort: 13 |
||
element 12 after sort: 14 |
element 12 after sort: 14 |
||
element 13 after sort: 15 |
element 13 after sort: 15 |
||
element 14 after sort: 16 |
element 14 after sort: 16 |
||
element 15 after sort: 17 |
element 15 after sort: 17 |
||
element 16 after sort: 18 |
element 16 after sort: 18 |
||
element 17 after sort: 20 |
element 17 after sort: 20 |
||
element 18 after sort: 21 |
element 18 after sort: 21 |
||
element 19 after sort: 22 |
element 19 after sort: 22 |
||
element 20 after sort: 23 |
element 20 after sort: 23 |
||
element 21 after sort: 24 |
element 21 after sort: 24 |
||
element 22 after sort: 25 |
element 22 after sort: 25 |
||
element 23 after sort: 38 |
element 23 after sort: 38 |
||
element 24 after sort: 39 |
element 24 after sort: 39 |
||
element 25 after sort: 41 |
element 25 after sort: 41 |
||
element 26 after sort: 42 |
element 26 after sort: 42 |
||
element 27 after sort: 42 |
element 27 after sort: 42 |
||
element 28 after sort: 43 |
element 28 after sort: 43 |
||
element 29 after sort: 43 |
element 29 after sort: 43 |
||
element 30 after sort: 44 |
element 30 after sort: 44 |
||
element 31 after sort: 45 |
element 31 after sort: 45 |
||
element 32 after sort: 46 |
element 32 after sort: 46 |
||
element 33 after sort: 62 |
element 33 after sort: 62 |
||
element 34 after sort: 63 |
element 34 after sort: 63 |
||
element 35 after sort: 77 |
element 35 after sort: 77 |
||
element 36 after sort: 78 |
element 36 after sort: 78 |
||
element 37 after sort: 78 |
element 37 after sort: 78 |
||
element 38 after sort: 79 |
element 38 after sort: 79 |
||
element 39 after sort: 113 |
element 39 after sort: 113 |
||
element 40 after sort: 114 |
element 40 after sort: 114 |
||
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ |
|||
────────────────────────────────────────────────── |
|||
</pre> |
</pre> |
||