void reverse(int A[], int start, int end)
{
while(start < end)
swap(A[start++], A[end--]);
}
//shift A[0…sz-1] by n (n>0)
void shiftArray(int A[], int sz, int n)
{
n = n%sz;
reverse(A, 0, sz-1);
reverse(A, 0, n-1);
reverse(A, n, sz-1);
return;
}
需要注意
reverse(A, 0, sz-1);
reverse(A, 0, n-1);
reverse(A, n, sz-1);
这种形势直接可用于向左shift
如果是向右shift需要作变换,shift的size变成 array_size-shift_size