Sort numbers lexicographically: Difference between revisions

Added solution for Action!
No edit summary
(Added solution for Action!)
Line 24:
<pre>
[1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9]
</pre>
 
=={{header|Action!}}==
<lang Action!>PROC PrintArray(INT ARRAY a INT size)
INT i
 
Put('[)
FOR i=0 TO size-1
DO
IF i>0 THEN Put(' ) FI
PrintI(a(i))
OD
Put(']) PutE()
RETURN
 
INT FUNC Compare(INT a1,a2)
CHAR ARRAY s1(10),s2(10)
INT res
 
StrI(a1,s1) StrI(a2,s2)
res=SCompare(s1,s2)
RETURN (res)
 
PROC InsertionSort(INT ARRAY a INT size)
INT i,j,value
 
FOR i=1 TO size-1
DO
value=a(i)
j=i-1
WHILE j>=0 AND Compare(a(j),value)>0
DO
a(j+1)=a(j)
j==-1
OD
a(j+1)=value
OD
RETURN
 
PROC Test(INT ARRAY a INT size)
PrintE("Array before sort:")
PrintArray(a,size)
InsertionSort(a,size)
PrintE("Array after sort:")
PrintArray(a,size)
PutE()
RETURN
 
PROC Main()
DEFINE COUNT_A="13"
DEFINE COUNT_B="50"
INT ARRAY a(COUNT_A),b(COUNT_B)
BYTE i
 
FOR i=1 TO COUNT_A
DO a(i-1)=i OD
 
FOR i=1 TO COUNT_B
DO b(i-1)=i OD
 
Test(a,COUNT_A)
Test(b,COUNT_B)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Sort_numbers_lexicographically.png Screenshot from Atari 8-bit computer]
<pre>
Array before sort:
[1 2 3 4 5 6 7 8 9 10 11 12 13]
Array after sort:
[1 10 11 12 13 2 3 4 5 6 7 8 9]
 
Array before sort:
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50]
Array after sort:
[1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 32 33 34 35 36 37 38 39 4 40 41 42 43 44 45 46 47 48 49 5 50 6 7 8 9]
</pre>
 
Anonymous user