58 lines
885 B
Text
58 lines
885 B
Text
INCLUDE "D2:SORT.ACT" ;from the Action! Tool Kit
|
|
|
|
PROC PrintArray(BYTE ARRAY a BYTE len)
|
|
CHAR ARRAY colors(3)=['R 'W 'B]
|
|
BYTE i,index
|
|
|
|
FOR i=0 TO len-1
|
|
DO
|
|
index=a(i)
|
|
Put(colors(index))
|
|
OD
|
|
RETURN
|
|
|
|
BYTE FUNC IsSorted(BYTE ARRAY a BYTE len)
|
|
BYTE i
|
|
|
|
IF len<=1 THEN
|
|
RETURN (1)
|
|
FI
|
|
FOR i=0 TO len-2
|
|
DO
|
|
IF a(i)>a(i+1) THEN
|
|
RETURN (0)
|
|
FI
|
|
OD
|
|
RETURN (1)
|
|
|
|
PROC Randomize(BYTE ARRAY a BYTE len)
|
|
BYTE i
|
|
|
|
FOR i=0 TO len-1
|
|
DO
|
|
a(i)=Rand(3)
|
|
OD
|
|
RETURN
|
|
|
|
PROC Main()
|
|
DEFINE SIZE="30"
|
|
BYTE ARRAY a(SIZE)
|
|
|
|
Put(125) PutE() ;clear the screen
|
|
DO
|
|
Randomize(a,SIZE)
|
|
UNTIL IsSorted(a,SIZE)=0
|
|
OD
|
|
PrintE("Unsorted:") PrintArray(a,SIZE)
|
|
PutE() PutE()
|
|
|
|
SortB(a,SIZE,0)
|
|
PrintE("Sorted:") PrintArray(a,SIZE)
|
|
PutE() PutE()
|
|
|
|
IF IsSorted(a,SIZE) THEN
|
|
PrintE("Sorting is valid")
|
|
ELSE
|
|
PrintE("Sorting is invalid!")
|
|
FI
|
|
RETURN
|