@@ -13,9 +13,9 @@ import DataStructures: heapify!, percolate_down!
13
13
14
14
export HeapSort, TimSort, RadixSort
15
15
16
- immutable HeapSortAlg <: Algorithm end
17
- immutable TimSortAlg <: Algorithm end
18
- immutable RadixSortAlg <: Algorithm end
16
+ struct HeapSortAlg <: Algorithm end
17
+ struct TimSortAlg <: Algorithm end
18
+ struct RadixSortAlg <: Algorithm end
19
19
20
20
const HeapSort = HeapSortAlg ()
21
21
const TimSort = TimSortAlg ()
53
53
uint_mapping (:: ForwardOrdering , x:: Float32 ) = (y = reinterpret (Int32, x); reinterpret (UInt32, ifelse (y < 0 , ~ y, xor (y, typemin (Int32)))))
54
54
uint_mapping (:: ForwardOrdering , x:: Float64 ) = (y = reinterpret (Int64, x); reinterpret (UInt64, ifelse (y < 0 , ~ y, xor (y, typemin (Int64)))))
55
55
56
- uint_mapping {Fwd} (rev:: ReverseOrdering{Fwd} , x) = ~ uint_mapping (rev. fwd, x)
57
- uint_mapping {T<:Real} (:: ReverseOrdering{ForwardOrdering} , x:: T ) = ~ uint_mapping (Forward, x) # maybe unnecessary; needs benchmark
56
+ uint_mapping (rev:: ReverseOrdering , x) = ~ uint_mapping (rev. fwd, x)
57
+ uint_mapping (:: ReverseOrdering{ForwardOrdering} , x:: Real ) = ~ uint_mapping (Forward, x) # maybe unnecessary; needs benchmark
58
58
59
59
uint_mapping (o:: By , x ) = uint_mapping (Forward, o. by (x))
60
60
uint_mapping (o:: Perm , i:: Int ) = uint_mapping (o. order, o. data[i])
@@ -82,7 +82,7 @@ function sort!(vs::AbstractVector, lo::Int, hi::Int, ::RadixSortAlg, o::Ordering
82
82
for i = lo: hi
83
83
v = uint_mapping (o, vs[i])
84
84
for j = 1 : iters
85
- idx = @compat ( Int ((v >> (j- 1 )* RADIX_SIZE) & RADIX_MASK) ) + 1
85
+ idx = Int ((v >> (j- 1 )* RADIX_SIZE) & RADIX_MASK) + 1
86
86
@inbounds bin[idx,j] += 1
87
87
end
88
88
end
@@ -93,7 +93,7 @@ function sort!(vs::AbstractVector, lo::Int, hi::Int, ::RadixSortAlg, o::Ordering
93
93
for j = 1 : iters
94
94
# Unroll first data iteration, check for degenerate case
95
95
v = uint_mapping (o, vs[hi])
96
- idx = @compat ( Int ((v >> (j- 1 )* RADIX_SIZE) & RADIX_MASK) ) + 1
96
+ idx = Int ((v >> (j- 1 )* RADIX_SIZE) & RADIX_MASK) + 1
97
97
98
98
# are all values the same at this radix?
99
99
if bin[idx,j] == len; continue ; end
@@ -106,7 +106,7 @@ function sort!(vs::AbstractVector, lo::Int, hi::Int, ::RadixSortAlg, o::Ordering
106
106
# Finish the loop...
107
107
@inbounds for i in hi- 1 : - 1 : lo
108
108
v = uint_mapping (o, vs[i])
109
- idx = @compat ( Int ((v >> (j- 1 )* RADIX_SIZE) & RADIX_MASK) ) + 1
109
+ idx = Int ((v >> (j- 1 )* RADIX_SIZE) & RADIX_MASK) + 1
110
110
ci = cbin[idx]
111
111
ts[ci] = vs[i]
112
112
cbin[idx] -= 1
@@ -141,7 +141,7 @@ const Run = UnitRange{Int}
141
141
142
142
const MIN_GALLOP = 7
143
143
144
- type MergeState
144
+ mutable struct MergeState
145
145
runs:: Vector{Run}
146
146
min_gallop:: Int
147
147
end
0 commit comments