( BSORT                                 sort an n-number array )

need roll
: bsort                           ( addr n --- )
  dup + over + swap               ( end = addr + 2n, start=addr)
  >r >r                           ( save these limits)
  begin 1                         ( to start, exchange flag = 1)
    r> 2 - r over >r              ( subtract 2 from end limit)
    do i 2 + @ i @ <              ( compare next two numbers)
      if
        i 2+ dup @ i dup @ 4 roll ! !   ( exchange the numbers)
        drop 0                    ( set exchange flag = 0)
      endif
    2 +loop
  until r> r> drop drop           ( keep sorting until flag = 1)
;
