sorting: faster sort-keys and sort-values for hashtables.
parent
7023cff14b
commit
e7bb1a43df
|
@ -1,7 +1,8 @@
|
||||||
! Copyright (C) 2005, 2009 Slava Pestov.
|
! Copyright (C) 2005, 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors arrays assocs growable.private kernel math
|
USING: accessors arrays assocs growable.private hashtables
|
||||||
math.order sequences sequences.private vectors ;
|
kernel kernel.private math math.order sequences
|
||||||
|
sequences.private vectors ;
|
||||||
IN: sorting
|
IN: sorting
|
||||||
|
|
||||||
! Optimized merge-sort:
|
! Optimized merge-sort:
|
||||||
|
@ -159,6 +160,9 @@ M: object sort-keys >alist sort-keys ;
|
||||||
M: sequence sort-keys
|
M: sequence sort-keys
|
||||||
0 check-bounds [ first-unsafe ] sort-with ;
|
0 check-bounds [ first-unsafe ] sort-with ;
|
||||||
|
|
||||||
|
M: hashtable sort-keys
|
||||||
|
>alist [ { array } declare first-unsafe ] sort-with ;
|
||||||
|
|
||||||
GENERIC: sort-values ( obj -- sortedseq )
|
GENERIC: sort-values ( obj -- sortedseq )
|
||||||
|
|
||||||
M: object sort-values >alist sort-values ;
|
M: object sort-values >alist sort-values ;
|
||||||
|
@ -166,4 +170,7 @@ M: object sort-values >alist sort-values ;
|
||||||
M: sequence sort-values
|
M: sequence sort-values
|
||||||
1 check-bounds [ second-unsafe ] sort-with ;
|
1 check-bounds [ second-unsafe ] sort-with ;
|
||||||
|
|
||||||
|
M: hashtable sort-values
|
||||||
|
>alist [ { array } declare second-unsafe ] sort-with ;
|
||||||
|
|
||||||
: sort-pair ( a b -- c d ) 2dup after? [ swap ] when ;
|
: sort-pair ( a b -- c d ) 2dup after? [ swap ] when ;
|
||||||
|
|
Loading…
Reference in New Issue