Paste: Heapify
Author: | yuuki |
Mode: | factor |
Date: | Mon, 22 Jun 2009 14:56:32 |
Plain Text |
: (greater)
[ pick over after=? ] dip swap
[ 2drop ] [ [ 2drop ] 2dip ] if ;
: greater
2dup length < [
dupd nth swap (greater)
] [ 2drop ] if ;
: greatest
[ over left swap greater ] 2keep [ right ] dip greater ;
: exchange-keys
[ rot swapd ] dip [ set-nth ] keep ;
: (heapify)
[ ] [ greatest ] [ drop nip dupd = ] 3tri [ 2drop set-nth ]
[ rot exchange-keys (heapify) ] if ;
: heapify
[ nth ] 2keep (heapify) ;
New Annotation