Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,49 @@
|
|||
GET "libhdr"
|
||||
|
||||
LET shellsort(v, upb) BE
|
||||
{ LET m = 1
|
||||
UNTIL m>upb DO m := m*3 + 1 // Find first suitable value in the
|
||||
// series: 1, 4, 13, 40, 121, 364, ...
|
||||
{ m := m/3
|
||||
FOR i = m+1 TO upb DO
|
||||
{ LET vi = v!i
|
||||
LET j = i
|
||||
{ LET k = j - m
|
||||
IF k<=0 | v!k < vi BREAK
|
||||
v!j := v!k
|
||||
j := k
|
||||
} REPEAT
|
||||
v!j := vi
|
||||
}
|
||||
} REPEATUNTIL m=1
|
||||
}
|
||||
|
||||
MANIFEST { upb = 10000 }
|
||||
|
||||
LET start() = VALOF
|
||||
{ LET v = getvec(upb)
|
||||
|
||||
try("shell", shellsort, v, upb)
|
||||
|
||||
writes("*nEnd of test*n")
|
||||
freevec(v)
|
||||
RESULTIS 0
|
||||
}
|
||||
|
||||
AND try(name, sortroutine, v, upb) BE
|
||||
{ // delay, referencing the first and last elements of v
|
||||
FOR i = 1 TO 50000 DO v!upb := v!1
|
||||
writef("*nSetting %n words of data for %s sort*n", upb, name)
|
||||
FOR i = 1 TO upb DO v!i := randno(10000)
|
||||
writef("Entering %s sort routine*n", name)
|
||||
sortroutine(v, upb)
|
||||
writes("Sorting complete*n")
|
||||
TEST sorted(v, upb)
|
||||
THEN writes("The data is now sorted*n")
|
||||
ELSE writef("### ERROR: %s sort does not work*n", name)
|
||||
}
|
||||
|
||||
AND sorted(v, n) = VALOF
|
||||
{ //FOR i = 1 TO n-1 UNLESS v!i<=v!(i+1) RESULTIS FALSE
|
||||
RESULTIS TRUE
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue