Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,2 @@
create test-data 2 , 4 , 3 , 1 , 2 ,
test-data 5 cell-sort

View file

@ -0,0 +1,44 @@
100000 CONSTANT SIZE
CREATE MYARRAY SIZE CELLS ALLOT
: [] ( n addr -- addr[n]) SWAP CELLS + ;
: FILLIT ( -- ) ( reversed order)
SIZE 0 DO SIZE I - I MYARRAY [] ! LOOP ;
: SEEIT ( -- )
SIZE 0 DO I MYARRAY [] ? LOOP ;
\ define non-standard words used by Quicksort author
1 CELLS CONSTANT CELL
CELL NEGATE CONSTANT -CELL
: CELL- CELL - ;
: MID ( l r -- mid ) OVER - 2/ -CELL AND + ;
: EXCH ( addr1 addr2 -- )
OVER @ OVER @ ( read values)
SWAP ROT ! SWAP ! ; ( exchange values)
: PARTITION ( l r -- l r r2 l2 )
2DUP MID @ >R ( r: pivot )
2DUP
BEGIN
SWAP BEGIN DUP @ R@ < WHILE CELL+ REPEAT
SWAP BEGIN R@ OVER @ < WHILE CELL- REPEAT
2DUP <= IF 2DUP EXCH >R CELL+ R> CELL- THEN
2DUP >
UNTIL
R> DROP ;
: QSORT ( l r -- )
PARTITION SWAP ROT
2DUP < IF RECURSE ELSE 2DROP THEN
2DUP < IF RECURSE ELSE 2DROP THEN ;
: QUICKSORT ( array len -- )
DUP 2 < IF 2DROP EXIT THEN 1- CELLS OVER + QSORT ;</LANG>
Test at the console
<syntaxhighlight lang="forth">FILLIT ok
MYARRAY SIZE QUICKSORT ok