//将n个长度的数组的最后的m个数据移到最前面
void Move(int* arr, int n, int m)
{
//检查参数合法性
assert(arr != NULL);
if (n <= 0 || m <= 0 || m >= n)
{
return;
}
int* brr = (int*)malloc(sizeof(int) * m);
//保存要移动的m个数据
int i;
for (i = n - m; i < n; ++i)//i作为arr的下标
{
brr[i - (n - m)] = arr[i];//brr下标从0开始
}
//移动arr前面的数据
for (i = n - m-1; i >= 0; --i)
{
arr[i + m] = arr[i];
}
//将那m个数据移到arr的最前面
for (i = 0; i < m; ++i)
{
arr[i] = brr[i];
}
free(brr);//释放空间
}
第一步:将要移动的m个数据保存到brr中
第二步:移动arr前面的数据
第三步:将那m个数据移到arr的最前面