將數組內的元素循環左移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);
}
相關文章
相關標籤/搜索