将数组内的元素循环左移P个位置
问题可以转化为将数组内前 n 个元素进行逆置,再将后(n-p)个元素逆置,最后将整个数组逆置
void Reverse(int A[],int pos1,int pos2){ // 将A[pos1]与A[pos2]的值互换 while(pos1 < pos2){ A[pos1] += A[pos2]; A[pos2] = A[pos1] - A[pos2]; A[pos1] = A[pos1] - A[pos2]; pos1++; pos2--; } } void Converse(int A[],int n,int p){ p = p % n; //等价于右移(n-p)个位置 reverse(A,0,p-1); reverse(A,p,n-1); reverse(A,0,n-1); }