将数组内的元素循环左移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[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);
}
相关文章
相关标签/搜索