Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is
rotated to [5,6,7,1,2,3,4].
#include<stdio.h>
void reverse(int *nums,int start,int end)
{
int t;
while(start<end)
{
t=*(nums+end-1);
*(nums+end-1)=*(nums+start);
*(nums+start)=t;
start++;
end--;
}
}
void rotate(int *nums,int numsSize,int k)
{
k=k%(numsSize);
reverse(nums,0,numsSize-k);
reverse(nums,numsSize-k,numsSize);
reverse(nums,0,numsSize);
}
int main(void)
{
int a[]={1,2,3,4,5,6,7};
int i;
rotate(a,7,3);
for(i=0;i<7;i++)
{
printf("%d\n",a[i]);
}
}

本文介绍了一种高效的数组旋转算法,通过三次反转操作实现数组元素的右移。提供了完整的C语言实现代码示例,并演示了如何使用该算法将一个包含7个元素的数组右移3位。

被折叠的 条评论
为什么被折叠?



