Sorting algorithms/Counting sort: Difference between revisions

→‎{{header|REXX}}: add version 2
(Add Nimrod)
(→‎{{header|REXX}}: add version 2)
Line 1,423:
 
=={{header|REXX}}==
===version 1===
<lang rexx>/*REXX program sorts an array using the count-sort method. */
call gen@ /*generate the array elements. */
Line 1,549 ⟶ 1,550:
────────────────────────────────────────
</pre>
===version 2===
<lang rexx>/* REXX ---------------------------------------------------------------
* 13.07.2014 Walter Pachl translated from PL/I
*--------------------------------------------------------------------*/
alist='999 888 777 1 5 13 15 17 19 21 5'
Parse Var alist lo hi .
Do i=1 By 1 While alist<>''
Parse Var alist a.i alist;
lo=min(lo,a.i)
hi=max(hi,a.i)
End
a.0=i-1
 
Call show 'before count_sort'
Call count_sort
Call show 'after count_sort'
Exit
 
count_sort: procedure Expose a. lo hi
t.=0
do i=1 to a.0
j=a.i
t.j=t.j+1
end
k=1
do i=lo to hi
if t.i<>0 then Do
do j=1 to t.i
a.k=i
k=k+1
end
end
end
Return
 
show: Procedure Expose a.
Parse Arg head
Say head
ol=''
Do i=1 To a.0
ol=ol right(a.i,3)
End
Say ol
Return</lang>
[{out}]
<pre>before count_sort
999 888 777 1 5 13 15 17 19 21 5
after count_sort
1 5 5 13 15 17 19 21 777 888 999</pre>
 
=={{header|Ruby}}==
2,300

edits