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}}== |