Skip to content

Commit afbed36

Browse files
Lilith HafnerLilith Hafner
authored andcommitted
explain and test reverse_view!
1 parent 6230587 commit afbed36

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

base/sort.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,11 +593,11 @@ function partition!(t::AbstractVector, lo::Integer, hi::Integer, o::Ordering, v:
593593
end
594594

595595
# Needed for bootstrapping because `view` is not available.
596+
# `reverse_view!(v, lo, hi)` has the same side effect as `reverse!(view(v, lo:hi))`
596597
function reverse_view!(v, lo, hi)
597598
for i in 0:div(hi-lo-1, 2)
598599
@inbounds v[lo+i], v[hi-i] = v[hi-i], v[lo+i]
599600
end
600-
v
601601
end
602602

603603
function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PartialQuickSort, o::Ordering, t::AbstractVector=similar(v), swap=false, rev=false)

test/sorting.jl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,25 @@ end
4141
@test Base.Sort.select_pivot([3, 2, 1], 1, 3, Reverse) == 2
4242
end
4343

44+
@testset "reverse_view!" begin
45+
a = [3, 1, 2, 5, 4]
46+
b = copy(a)
47+
rv!(v, lo, hi) = (reverse!(view(v, lo:hi)); v)
48+
@test a == b
49+
Base.Sort.reverse_view!(a, 1, 5)
50+
rv!(b, 1, 5)
51+
@test a == b
52+
Base.Sort.reverse_view!(a, 2, 5)
53+
rv!(b, 2, 5)
54+
@test a == b
55+
Base.Sort.reverse_view!(a, 1, 1)
56+
rv!(b, 1, 1)
57+
@test a == b
58+
Base.Sort.reverse_view!(a, 3, 1)
59+
rv!(b, 3, 1)
60+
@test a == b
61+
end
62+
4463
@testset "sort" begin
4564
@test sort([2,3,1]) == [1,2,3] == sort([2,3,1]; order=Forward)
4665
@test sort([2,3,1], rev=true) == [3,2,1] == sort([2,3,1], order=Reverse)

0 commit comments

Comments
 (0)