20 lines
		
	
	
		
			569 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			569 B
		
	
	
	
		
			Factor
		
	
	
| USING: kernel locals math sequences sequences.private ;
 | |
| IN: sorting.insertion
 | |
| 
 | |
| <PRIVATE
 | |
| 
 | |
| :: insert ( ... seq quot: ( ... elt -- ... elt' ) n -- ... )
 | |
|     n zero? [
 | |
|         n n 1 - [ seq nth-unsafe ] bi@
 | |
|         2dup [ quot call ] bi@ >= [ 2drop ] [
 | |
|             n 1 - n [ seq set-nth-unsafe ] bi-curry@ bi*
 | |
|             seq quot n 1 - insert
 | |
|         ] if
 | |
|     ] unless ; inline recursive
 | |
| 
 | |
| PRIVATE>
 | |
| 
 | |
| : insertion-sort ( ... seq quot: ( ... elt -- ... elt' ) -- ... )
 | |
|     ! quot is a transformation on elements
 | |
|     over length [ insert ] 2with 1 -rot (each-integer) ; inline
 |