RosettaCodeData/Task/Sort-numbers-lexicographically/Action-/sort-numbers-lexicographically.action
2023-07-01 13:44:08 -04:00

60 lines
904 B
Text

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