September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,23 @@
|
|||
# Sort the input array;
|
||||
# "base" must be an integer greater than 1
|
||||
def radix_sort(base):
|
||||
# We only need the ceiling of non-negatives:
|
||||
def ceil: if . == floor then . else (. + 1 | floor) end;
|
||||
|
||||
min as $min
|
||||
| map(. - $min)
|
||||
| ((( max|log) / (base|log)) | ceil) as $rounds
|
||||
| reduce range(0; $rounds) as $i
|
||||
# state: [ base^i, buckets ]
|
||||
( [1, .];
|
||||
.[0] as $base_i
|
||||
| reduce .[1][] as $n
|
||||
([];
|
||||
(($n/$base_i) % base) as $digit
|
||||
| .[$digit] += [$n] )
|
||||
| [($base_i * base), (map(select(. != null)) | flatten)] )
|
||||
| .[1]
|
||||
| map(. + $min) ;
|
||||
|
||||
def radix_sort:
|
||||
radix_sort(10);
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Verify that radix_sort agrees with sort
|
||||
( [1, 3, 8, 9, 0, 0, 8, 7, 1, 6],
|
||||
[170, 45, 75, 90, 2, 24, 802, 66],
|
||||
[170, 45, 75, 90, 2, 24, -802, -66] )
|
||||
| (radix_sort == sort)
|
||||
Loading…
Add table
Add a link
Reference in a new issue