]> gitweb.factorcode.org Git - factor.git/blob - extra/sorting/heap/heap.factor
factor: trim using lists
[factor.git] / extra / sorting / heap / heap.factor
1 ! Copyright (C) 2014 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: heaps kernel sequences vectors ;
5
6 IN: sorting.heap
7
8 : heapsort-with ( seq quot: ( elt -- key ) -- sorted-seq )
9     [
10         over length <vector> min-heap boa
11         [ '[ dup @ _ heap-push ] each ] keep
12     ] [
13         drop [ length ] keep new-resizable
14         [ '[ drop _ push ] slurp-heap ] keep
15     ] [
16         drop like
17     ] 2tri ; inline
18
19 : heapsort ( seq -- sorted-seq ) [ ] heapsort-with ;