Sorting algorithms/Counting sort: Difference between revisions
Content added Content deleted
(→{{header|Vlang}}: Rename "Vlang" in "V (Vlang)") |
Deadmarshal (talk | contribs) (Added Oberon-02) Tag: Made through Tor |
||
Line 2,543: | Line 2,543: | ||
Output: |
Output: |
||
<pre>@[1, 1, 1, 3, 4, 5, 7, 20]</pre> |
<pre>@[1, 1, 1, 3, 4, 5, 7, 20]</pre> |
||
=={{header|Oberon-2}}== |
|||
<syntaxhighlight lang="oberon">MODULE CS; |
|||
IMPORT Out; |
|||
VAR |
|||
A:ARRAY 8 OF INTEGER; |
|||
I:LONGINT; |
|||
PROCEDURE Init(VAR A:ARRAY OF INTEGER); |
|||
BEGIN |
|||
A[0] := 80; A[1] := 10; A[2] := 40; A[3] := 60; |
|||
A[4] := 50; A[5] := 30; A[6] := 20; A[7] := 70; |
|||
END Init; |
|||
PROCEDURE CountingSort(VAR A:ARRAY OF INTEGER; Min,Max:INTEGER); |
|||
VAR |
|||
I,Z,Range:LONGINT; |
|||
Count:POINTER TO ARRAY OF INTEGER; |
|||
BEGIN |
|||
Range := Max - Min + 1; |
|||
NEW(Count, Range); |
|||
Z := 0; |
|||
FOR I := 0 TO LEN(A)-1 DO |
|||
INC(Count[A[I] - Min]); |
|||
END; |
|||
FOR I := Min TO Max DO |
|||
WHILE(Count[I - Min] > 0) DO |
|||
A[Z] := SHORT(I); |
|||
INC(Z); |
|||
DEC(Count[I - Min]); |
|||
END; |
|||
END; |
|||
END CountingSort; |
|||
BEGIN |
|||
Init(A); |
|||
CountingSort(A, 10, 80); |
|||
FOR I := 0 TO LEN(A)-1 DO |
|||
Out.Int(A[I],0); Out.String(" "); |
|||
END; |
|||
Out.Ln; |
|||
END CS. |
|||
</syntaxhighlight> |
|||
=={{header|Objeck}}== |
=={{header|Objeck}}== |