sorting.heap: adding Heapsort implementation.
parent
c20838117d
commit
219c73b0c1
|
@ -0,0 +1 @@
|
|||
John Benediktsson
|
|
@ -0,0 +1,14 @@
|
|||
USING: kernel sequences tools.test ;
|
||||
IN: sorting.heap
|
||||
|
||||
{ { } } [ { } heapsort ] unit-test
|
||||
{ { 1 } } [ { 1 } heapsort ] unit-test
|
||||
{ { 1 2 3 4 5 } } [ { 1 4 2 5 3 } heapsort ] unit-test
|
||||
|
||||
{
|
||||
{ "fred" "dino" "wilma" "betty" "barney" "pebbles" "bamm-bamm" }
|
||||
} [
|
||||
{ "fred" "wilma" "pebbles" "dino" "barney" "betty" "bamm-bamm" }
|
||||
[ length ] heapsort-with
|
||||
] unit-test
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
! Copyright (C) 2014 John Benediktsson
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
|
||||
USING: assocs heaps kernel sequences ;
|
||||
|
||||
IN: sorting.heap
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: (heapsort) ( alist accum -- sorted-seq )
|
||||
[ >min-heap ] [ [ [ push ] curry slurp-heap ] keep ] bi* ; inline
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: heapsort ( seq -- sorted-seq )
|
||||
[
|
||||
[ dup zip ]
|
||||
[ length ]
|
||||
[ new-resizable ] tri
|
||||
(heapsort)
|
||||
] [ like ] bi ;
|
||||
|
||||
: heapsort-with ( seq quot: ( elt -- key ) -- sorted-seq )
|
||||
[
|
||||
[ keep ] curry [ { } map>assoc ] curry
|
||||
[ length ]
|
||||
[ new-resizable ] tri
|
||||
(heapsort)
|
||||
] 2keep drop like ; inline
|
|
@ -0,0 +1 @@
|
|||
Heapsort
|
|
@ -0,0 +1,2 @@
|
|||
collections
|
||||
algorithms
|
Loading…
Reference in New Issue