60 lines
904 B
Text
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
|