有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数

如图所示:
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数_第1张图片
首先我们需要知道如何实现的算法:
1.我们将要把m单独拿出存储在一个数组中,才能使n-m的数字往后移
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数_第2张图片
2.将n-m的数字从后往前依此移动
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数_第3张图片
3.最后把m的值放入前面
在这里插入图片描述

#include
#include

void Move(int *arr,int n,int m)
{
	if(m<0 || m>=n)
	{
		return ;
	}
	int *brr = (int *)malloc(m*sizeof(int));

	int i;
	for(i=0;i=0;i--)
	{
		arr[i+m] = arr[i];
	}

	//将brr中的数据复制到arr中
	for(i=0;i

可能你们会问为什么n-m的数字从后往前依此移动,原因在于内存重叠

你可能感兴趣的:(指针)