三次翻转法实现数组左移
三次翻转法实现数组左移,被归类到运用了分治法
调用函数两个函数实现。
实现就地左移。
#include<iostream>
using namespace std;
void LeftReverse(char*a,int begin,int end){
int tmp;
for(int i=0;i<(end-begin+1)/2;++i){
tmp=a[begin+i];
a[begin+i]=a[end-i];
a[end-i]=tmp;
}
}
void Converse(char*a,int n,int k){
LeftReverse(a,0,k-1);
LeftReverse(a,k,n-1);
LeftReverse(a,0,n-1);
}
int main(){
int n;
cin>>n;
int k;
cin>>k;
char a[n];
for(int i=0;i<n;++i){
cin>>a[i];
}
Converse(a,n,k);
for(int i=0;i<n;++i){
cout<<a[i];
}