Sorting algorithms/Counting sort: Difference between revisions

Content added Content deleted
(Elided the word "anyways" from the last sentence in the task's preamble, strengthened the wording about the use of sparse arrays, also elided a stray comma, cleaned up some wording in the last paragraph, added other wording.)
No edit summary
Line 1,029: Line 1,029:
on list : [ 3 14 1 5 9 2 6 3 ]
on list : [ 3 14 1 5 9 2 6 3 ]
with op = &null: [ 1 2 3 3 5 6 9 14 ] (0 ms)</pre>
with op = &null: [ 1 2 3 3 5 6 9 14 ] (0 ms)</pre>

=={{header|IS-BASIC}}==
<lang IS-BASIC>
100 PROGRAM "CountSrt.bas"
110 RANDOMIZE
120 NUMERIC ARRAY(5 TO 24)
130 CALL INIT(ARRAY)
140 CALL WRITE(ARRAY)
150 CALL COUNTINGSORT(ARRAY)
160 CALL WRITE(ARRAY)
170 DEF INIT(REF A)
180 FOR I=LBOUND(A) TO UBOUND(A)
190 LET A(I)=RND(98)+1
200 NEXT
210 END DEF
220 DEF WRITE(REF A)
230 FOR I=LBOUND(A) TO UBOUND(A)
240 PRINT A(I);
250 NEXT
260 PRINT
270 END DEF
280 DEF FMIN(REF A)
290 LET T=INF
300 FOR I=LBOUND(A) TO UBOUND(A)
310 LET T=MIN(A(I),T)
320 NEXT
330 LET FMIN=T
340 END DEF
350 DEF FMAX(REF A)
360 LET T=-INF
370 FOR I=LBOUND(A) TO UBOUND(A)
380 LET T=MAX(A(I),T)
390 NEXT
400 LET FMAX=T
410 END DEF
420 DEF COUNTINGSORT(REF A)
430 LET MX=FMAX(A):LET MN=FMIN(A):LET Z=LBOUND(A)
440 NUMERIC COUNT(0 TO MX-MN)
450 FOR I=0 TO UBOUND(COUNT)
460 LET COUNT(I)=0
470 NEXT
480 FOR I=Z TO UBOUND(A)
490 LET COUNT(A(I)-MN)=COUNT(A(I)-MN)+1
500 NEXT
510 FOR I=MN TO MX
520 DO WHILE COUNT(I-MN)>0
530 LET A(Z)=I:LET Z=Z+1:LET COUNT(I-MN)=COUNT(I-MN)-1
540 LOOP
550 NEXT
560 END DEF</lang>


=={{header|J}}==
=={{header|J}}==