只允许使用2个变量(参考《编程珠玑》)
>> cat shift.c
#include <stdio.h>
void shift(int a[], int n)
{
int i, x;
for(i = 0; i < n/2; i++)
{
int x = a[i];
a[i] = a[n-1-i];
a[n-1-i] = x;
}
}
void solution(int a[], int n)
{
int k = 5;
shift(a, k);
shift(a+k, n-k);
shift(a, n);
}
void print(int a[], int n)
{
int i = 0;
for(; i < n; i++)
{
printf("%d ", a[i]);
}
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9};
int n = sizeof(a)/sizeof(int);
solution(a, n);
print(a, n);
}
运行结果:
>> ./a.out
6 7 8 9 1 2 3 4 5