rotate right algorithm with subrange - NormandaleWells/CSn GitHub Wiki
rotate_right(A, lo, hi)
rotate_right
rotates the specified sub-range of array A
one position to the right. That is, A[lo]
is copied to A[lo+1]
, A[lo+1]
is copied to A[lo+2]
, etc. A[hi-1]
is copied to A[lo]
.
rotate_right(A, lo, hi)
if hi-lo <= 1
return
A.type t = A[hi-1]
for (index i = hi-1; i > 0; i--)
A[i] = A[i-1]
A[lo] = t
Why do we need to go through the array backwards?
What should happen with an sub-range of sizes 0, 1, and 2? How does this implementation handle those cases?