Sorting algorithms/Counting sort: Difference between revisions

Content added Content deleted
(Added PicoLisp)
Line 1,012: Line 1,012:
sorted <- counting_sort(ages, 0, 140)
sorted <- counting_sort(ages, 0, 140)
print(sorted)</lang>
print(sorted)</lang>

=={{header|REXX}}==
<lang rexx>
/*REXX program sorts an array using the count-sort method. */

call gen@ /*generate array elements. */
call show@ 'before sort' /*show before array elements*/
call countSort highItem /*invoke the count sort. */
call show@ ' after sort' /*show after array elements*/
exit


/*─────────────────────────────────────countSORT subroutine────────*/
countSort: procedure expose @.; parse arg n
h=@.1
L=h

do m=2 to n
L=min(L,@.m)
h=max(h,@.m)
end

_.=0

do j=1 for n
k=@.j
_.k=_.k+1
end

#=1

do j=L to h
if _.j\==0 then do #=# for _.j
@.#=j
end
end

return




/*─────────────────────────────────────GEN@ subroutine─────────────*/
gen@: @.='' /*assign default value. */

/* get the first 40 Recaman numbers: subtract if you can, */
/* otherwise add. Another way: Recaman(1) = 1, */
/* Recaman(n) = Recaman(n-1)-n if positive and new, else */
/* Recaman(n) = Recaman(n-1)+n */

@.1 = 1
@.2 = 3
@.3 = 6
@.4 = 2
@.5 = 7
@.6 = 13
@.7 = 20
@.8 = 12
@.9 = 21
@.10= 11
@.11= 22
@.12= 10
@.13= 23
@.14= 9
@.15= 24
@.16= 8
@.17= 25
@.18= 43
@.19= 62
@.20= 42
@.21= 63
@.22= 41
@.23= 18
@.24= 42
@.25= 17
@.26= 43
@.27= 16
@.28= 44
@.29= 15
@.30= 45
@.31= 14
@.32= 46
@.33= 79
@.34= 113
@.35= 78
@.36= 114
@.37= 77
@.38= 39
@.39= 78
@.40= 38

do highItem=1 while @.highItem\=='' /*find how many entries. */
end

highItem=highItem-1 /*adjust highItem slightly. */
return


/*─────────────────────────────────────SHOW@ subroutine────────────*/
show@: widthH=length(highItem) /*maximum width of any line.*/

do j=1 for highItem
say 'element' right(j,widthH) arg(1)":" @.j
end

say copies('─',80) /*show a seperator line. */
return
</lang>
Output:
<pre style="height:30ex;overflow:scroll">
element 1 before sort: 1
element 2 before sort: 3
element 3 before sort: 6
element 4 before sort: 2
element 5 before sort: 7
element 6 before sort: 13
element 7 before sort: 20
element 8 before sort: 12
element 9 before sort: 21
element 10 before sort: 11
element 11 before sort: 22
element 12 before sort: 10
element 13 before sort: 23
element 14 before sort: 9
element 15 before sort: 24
element 16 before sort: 8
element 17 before sort: 25
element 18 before sort: 43
element 19 before sort: 62
element 20 before sort: 42
element 21 before sort: 63
element 22 before sort: 41
element 23 before sort: 18
element 24 before sort: 42
element 25 before sort: 17
element 26 before sort: 43
element 27 before sort: 16
element 28 before sort: 44
element 29 before sort: 15
element 30 before sort: 45
element 31 before sort: 14
element 32 before sort: 46
element 33 before sort: 79
element 34 before sort: 113
element 35 before sort: 78
element 36 before sort: 114
element 37 before sort: 77
element 38 before sort: 39
element 39 before sort: 78
element 40 before sort: 38
────────────────────────────────────────────────────────────────────────────────
element 1 after sort: 1
element 2 after sort: 2
element 3 after sort: 3
element 4 after sort: 6
element 5 after sort: 7
element 6 after sort: 8
element 7 after sort: 9
element 8 after sort: 10
element 9 after sort: 11
element 10 after sort: 12
element 11 after sort: 13
element 12 after sort: 14
element 13 after sort: 15
element 14 after sort: 16
element 15 after sort: 17
element 16 after sort: 18
element 17 after sort: 20
element 18 after sort: 21
element 19 after sort: 22
element 20 after sort: 23
element 21 after sort: 24
element 22 after sort: 25
element 23 after sort: 38
element 24 after sort: 39
element 25 after sort: 41
element 26 after sort: 42
element 27 after sort: 42
element 28 after sort: 43
element 29 after sort: 43
element 30 after sort: 44
element 31 after sort: 45
element 32 after sort: 46
element 33 after sort: 62
element 34 after sort: 63
element 35 after sort: 77
element 36 after sort: 78
element 37 after sort: 78
element 38 after sort: 79
element 39 after sort: 113
element 40 after sort: 114
────────────────────────────────────────────────────────────────────────────────
</pre>


=={{header|Ruby}}==
=={{header|Ruby}}==