factor/basis/sorting/insertion/insertion.factor

17 lines
429 B
Factor

USING: locals sequences kernel math ;
IN: sorting.insertion
<PRIVATE
:: insert ( seq quot: ( elt -- elt' ) n -- )
n zero? [
n n 1 - [ seq nth quot call ] bi@ >= [
n n 1 - seq exchange
seq quot n 1 - insert
] unless
] unless ; inline recursive
PRIVATE>
: insertion-sort ( seq quot -- )
! quot is a transformation on elements
over length [ insert ] with with each ; inline