#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<assert.h>
void Move(int *arr,int n,int m)
{
if(arr==NULL||n<=0||n<m)
{
return ;
}
int *brr=(int *)malloc(m*sizeofof(int));
//将arr中后面的m个数据移到brr中
int i;
for (i=0;i<m;i++)
{
brr[i]=arr[n-m+i];
}
//将arr中前面的数据后移
for(i=n-m-1;i>=0;i--)
{
arr[i+m]=arr[i];
}
//将brr数据移到arr中
for(i=0;i<m;i++)
{
arr[i+m]=arr[i];
}
free(brr);
}
int main()
{
int arr[]={7,9,5,2,7,23,77,43};
Move(arr,8,2);
printf("%d\n",arr);
}
将长度为n的数组arr后面m个数据移到最前面
最新推荐文章于 2026-06-21 13:45:56 发布
本文介绍了一个使用C语言实现的数组旋转算法,通过创建辅助数组来完成数据的移动,避免了直接在原数组上操作可能导致的复杂性和错误。该算法首先将原数组的后m个元素复制到辅助数组,然后将剩余的元素向前移动m个位置,最后将辅助数组的内容复制回原数组的末尾。
2858

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



