数组快速移位

来源:互联网 发布: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;}


原创粉丝点击