/**
* 将一个数组向右移动K位
* 如:123456,向右移动2位
* 则:561234
* */
#include <algorithm>
#include <iostream>
using namespace std;
void right_shift_n(int* arr,unsigned n,unsigned k)
{
if(k<=0||k%n==0)
return ;
k=k%n;
reverse(arr,arr+n-k);
reverse(arr+n-k,arr+n);
reverse(arr,arr+n);
}
int main(int argc,char* argv[])
{
int arr[]={1,2,3,4,5,6,7};
int n=sizeof(arr)/sizeof(int);
cout<<"Before:"<<endl;
for_each(arr,arr+n,[](const int& n)
{
cout<<n<<" ";
}
);
cout<<endl;
right_shift_n(arr,n,3);
cout<<"After:"<<endl;
for_each(arr,arr+n,[](const int& n)
{
cout<<n<<" ";
}
);
cout<<endl;
}
数组右移
最新推荐文章于 2023-04-03 01:08:44 发布