算法描述(算法本身非原创):
首先将前M个数逆序,然后将后N-M个数逆序,然后再将这个数组逆序。代码如下:
public static void rotate (int a[],int M){
int temp = 0;
int N = a.length;
int i,j;
for(i = 0,j=M-1;i<(M>>1);i++){
temp = a[i];
a[i] = a[j];
a[j] = temp;
j--;
}
for(i = M,j = N-1;i<((M+N)>>1);i++){
temp = a[i];
a[i] = a[j];
a[j] = temp;
j--;
}
for(i = 0,j=N-1;i<N>>1;i++){
temp = a[i];
a[i] = a[j];
a[j] = temp;
j--;
}
for(i = 0;i<N;i++){
System.out.print(a[i] + " ");
}
}