设计一个时间复杂度为O(n)的算法,实现将数组A[n]中所有元素左循环移n位
/*
作者:xdc
时间:2013年3月29日11:05:19
功能:设计一个时间复杂度为O(n)的算法,实现将数组A[n]中所有元素左循环移n位
算法:参见课本p16-17,第一章思想火花
*/
# include <stdio.h>
# include <stdlib.h>
void move(int arr[], int a, int n); //数组左循环移位
void reverse(int arr[], int beg, int end); //逆置数组
int main(void)
{
//以整型数组为例
int array1[10] = {2, 44, 54, 343, 434, 4324, 545, 86, 43, 32};
int a = 0; //a表示循环移位的位数
int i=0, j=0;
//读入移动位数,移位按mod运算
printf("请输入需要移动的位数:");
scanf("%d", &a);
//检查输入
if (a<0)
{
printf("您的输入不能左移!\n");
exit(0);
}
//输出原数组
printf("原数组为:\n");
for (i; i<10; i++)
printf("%d ", array1[i]);
printf("\n");
//循环移位
move(array1, a, 10);
//输出移位后的结果
printf("左循环移%d位(即%d位)后数组为:\n", a, a%10);
for (j; j<10; j++)
pri