Nemo #6760(2008/07/17 10:49 GMT) [ PostScript ] Rating0/0=0.00
PostScriptで、radix sort 基数2 です。 特にかわったことはやっていない筈です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
%!PS /AddToVector { % val [Vector] AddToVector [NewVector] [ 3 1 roll { 1 index add exch } forall pop ] } bind def /RadixSortCore { % [Vector] max RadixSortCore [NewVector] 5 dict begin /Max exch def /Vect exch def /Radix 1 def { /Vect [ Vect { dup Radix and 0 ne { pop } if } forall Vect { dup Radix and 0 eq { pop } if } forall ] def Radix Max gt { exit } if /Radix Radix dup add def } loop Vect end } bind def /RadixSort { % min max [Vector] RadixSort [NewVector] 2 index neg exch AddToVector exch 2 index sub RadixSortCore AddToVector } bind def % ============ Test Code ============== -1024 2048 [ -510 10 7 12 45 120 -1024 -511 -512 249 1238 1274 ] RadixSort ==
Rating0/0=0.00-0+
[ reply ]
Nemo
#6760()
[
PostScript
]
Rating0/0=0.00
PostScriptで、radix sort 基数2 です。 特にかわったことはやっていない筈です。
%!PS /AddToVector { % val [Vector] AddToVector [NewVector] [ 3 1 roll { 1 index add exch } forall pop ] } bind def /RadixSortCore { % [Vector] max RadixSortCore [NewVector] 5 dict begin /Max exch def /Vect exch def /Radix 1 def { /Vect [ Vect { dup Radix and 0 ne { pop } if } forall Vect { dup Radix and 0 eq { pop } if } forall ] def Radix Max gt { exit } if /Radix Radix dup add def } loop Vect end } bind def /RadixSort { % min max [Vector] RadixSort [NewVector] 2 index neg exch AddToVector exch 2 index sub RadixSortCore AddToVector } bind def % ============ Test Code ============== -1024 2048 [ -510 10 7 12 45 120 -1024 -511 -512 249 1238 1274 ] RadixSort ==Rating0/0=0.00-0+
[ reply ]