1+ __precompile__ ()
2+
13module SortingAlgorithms
24
35using Compat
6+ using DataStructures
47import Compat. view
58using Base. Sort
69using Base. Order
710
811import Base. Sort: sort!
9- import Base . Collections : heapify!, percolate_down!
12+ import DataStructures : heapify!, percolate_down!
1013
1114export HeapSort, TimSort, RadixSort
1215
4548uint_mapping (:: ForwardOrdering , x:: Unsigned ) = x
4649for (signedty, unsignedty) in ((Int8, UInt8), (Int16, UInt16), (Int32, UInt32), (Int64, UInt64), (Int128, UInt128))
4750 # In Julia 0.4 we can just use unsigned() here
48- @eval uint_mapping (:: ForwardOrdering , x:: $signedty ) = reinterpret ($ unsignedty, x $ typemin (typeof (x)))
51+ @eval uint_mapping (:: ForwardOrdering , x:: $signedty ) = reinterpret ($ unsignedty, xor (x, typemin (typeof (x) )))
4952end
50- uint_mapping (:: ForwardOrdering , x:: Float32 ) = (y = reinterpret (Int32, x); reinterpret (UInt32, ifelse (y < 0 , ~ y, y $ typemin (Int32))))
51- uint_mapping (:: ForwardOrdering , x:: Float64 ) = (y = reinterpret (Int64, x); reinterpret (UInt64, ifelse (y < 0 , ~ y, y $ typemin (Int64))))
53+ uint_mapping (:: ForwardOrdering , x:: Float32 ) = (y = reinterpret (Int32, x); reinterpret (UInt32, ifelse (y < 0 , ~ y, xor (y, typemin (Int32) ))))
54+ uint_mapping (:: ForwardOrdering , x:: Float64 ) = (y = reinterpret (Int64, x); reinterpret (UInt64, ifelse (y < 0 , ~ y, xor (y, typemin (Int64) ))))
5255
5356uint_mapping {Fwd} (rev:: ReverseOrdering{Fwd} , x) = ~ uint_mapping (rev. fwd, x)
5457uint_mapping {T<:Real} (:: ReverseOrdering{ForwardOrdering} , x:: T ) = ~ uint_mapping (Forward, x) # maybe unnecessary; needs benchmark
@@ -65,7 +68,7 @@ function sort!(vs::AbstractVector, lo::Int, hi::Int, ::RadixSortAlg, o::Ordering
6568 if lo >= hi; return vs; end
6669
6770 # Make sure we're sorting a bits type
68- T = ordtype (o, vs)
71+ T = Base . Order . ordtype (o, vs)
6972 if ! isbits (T)
7073 error (" Radix sort only sorts bits types (got $T )" )
7174 end
134137#
135138# Original author: @kmsquire
136139
137- typealias Run UnitRange{Int}
140+ const Run = UnitRange{Int}
138141
139142const MIN_GALLOP = 7
140143
0 commit comments