有N个数,移动M个数放到后面: 2 3 4 5 6 7 8 9---> 5 6 7 8 9 2 3 4
为什么我能把前面的移到后面,后面的移到前面却出错呢?
#include<iostream>
using namespace std;
const int max=10;
const int n=4;
int main()
{
void sort(int *p,int s);
int a[max];
int *p=a;
int j=5;
for(p=a;p<(a+max);p++){
j++;
*p=j;
}
for(p=a;p<(a+max);){
cout<<*p++<<' ';
}
cout<<endl;
sort(a,n);
return 0;
}
void sort(int *p,int s)
{
int i,j;
int a[max];
int a1[n],
a2[max-n];
int *array=a,
*array1=a1,
*array2=a2;
for(j=s;j<max;j++){
*(array2+j)=*(p+j);
}
for(i=0;i<max-s;i++){
*(array+i)=*(array2+i); //这里是移动后面到前面的,哪出错了?
}
//******************************
for(i=0;i<s;i++){
*(array1+i)=*(p+i);
}
for(i=max-s,j=0;i<max,j<s;i++,j++){ //前面的移到后面却行呢?
*(array+i)=*(array1+j);
}
for(array=a;array<(a+max);array++){
cout<<*array<<' ';
}
cout<<endl;
}