將數組中的數循環右移


設將n個整數存放在一維數組R中。設計一個算法,將R中的序列循環左移P個位置,即將R中的數據由{X0,X1,X2....Xn-1}  變換為{Xp,Xp+1,...,Xn-1,X0,X1,X2...,Xp-1}。

思路:要實現R中的序列循環左移P個位置,只需要將R中前P個元素逆置,再將剩下的元素逆置,最后將R中所有元素再整體逆置。

逆置操作:  

 1 void Reverse(int R[],int left,int right)
 2 {
 3     int i,j;
 4     int temp;
 5     for(i=left,j=right;i<j;++i,--j){
 6         temp = R[i];
 7         R[i] = R[j];
 8         R[j] = temp;
 9     }
10 }

實現循環左移:

 1 void RCR(int R[],int n,int p)
 2 {
 3     if(p<=0||p>=n)
 4         cout<<"Error"<<endl;
 5     else{
 6         Reverse(R,0,p-1);
 7         Reverse(R,p,n-1);
 8         Reverse(R,0,n-1);
 9     }
10 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM