数组快速移位
来源:互联网 发布:mac如何创建快捷方式 编辑:程序博客网 时间:2024/05/22 06:13
//移位的时候,直接把一个元素放到它最终的位置上,但是要注意元素的下标是如何变换的。时间效率O(n),空间效率O(1).#include<iostream>#include<fstream>using namespace std;int gcd(int n,int k){while(k){int r=n%k;n=k;k=r;}return n;}int _tmain(int argc, _TCHAR* argv[]){int n=10; //Öž¶šnºÍkint k;while(cin>>k){k=k%n;int data[10]={1,2,3,4,5,6,7,8,9,10};int gcdOfnk=gcd(n,k);cout<<gcdOfnk<<endl;int Num=n/gcdOfnk;for(int i=0;i<gcdOfnk;i++)//·ÖΪgcdOfnk×éÀŽÒÆλ{int temp=data[i]; //±£Žæÿ×éµÄµÚÒ»žöÔªËØint index=i;for(int j=0;j<Num-1;j++){data[index]=data[(index+k)%n];index=(index+k)%n;}data[index]=temp;}for(int i=0;i<n;i++){cout<<data[i]<<" ";}cout<<endl;}system("pause");return 2;}