Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,24 @@
|
|||
defer precedes
|
||||
defer exchange
|
||||
|
||||
: gnomesort ( a n)
|
||||
swap >r 1 ( n c)
|
||||
begin ( n c)
|
||||
over over > ( n c f)
|
||||
while ( n c)
|
||||
dup if ( n c)
|
||||
dup dup 1- over over r@ precedes
|
||||
if r@ exchange 1- else drop drop 1+ then
|
||||
else 1+ then ( n c)
|
||||
repeat drop drop r> drop ( --)
|
||||
;
|
||||
|
||||
create example
|
||||
8 93 69 52 50 79 33 52 19 77 , , , , , , , , , ,
|
||||
|
||||
:noname >r cells r@ + @ swap cells r> + @ swap < ; is precedes
|
||||
:noname >r cells r@ + swap cells r> + over @ over @ swap rot ! swap ! ; is exchange
|
||||
|
||||
: .array 10 0 do example i cells + ? loop cr ;
|
||||
|
||||
.array example 10 gnomesort .array
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
: gnomesort+ ( a n)
|
||||
swap >r 2 tuck 1- ( c2 n c1)
|
||||
begin ( c2 n c1)
|
||||
over over > ( c2 n c1 f)
|
||||
while ( c2 n c1)
|
||||
dup if ( c2 n c1)
|
||||
dup dup 1- over over r@ precedes
|
||||
if r@ exchange 1- else drop drop drop >r dup 1+ swap r> swap then
|
||||
else drop >r dup 1+ swap r> swap then
|
||||
repeat drop drop drop r> drop
|
||||
; ( --)
|
||||
Loading…
Add table
Add a link
Reference in a new issue