部分数组元素调换

部分数组元素调换_第1张图片

#include
#include
///部分数组元素调换
void move(int *arr,int n,int m)
{
    if(m<0 || m>=n)//如果移动个数小于0或者移动个数大于总数则返回。
    {
        return ;
    }
    //malloc主动从堆区动态申请一块空间。
    int *brr = (int *)malloc(m*sizeof(int));//先将要前移的数组定义出来
    int i;
    for(i=0;i=0;i--)//将前面的数据后移,先移动后面的数据
    {
        arr[i+m] = arr[i];
    }
    for(i=0;i

我们来看一下Move函数实现的具体步骤:
1.先将arr[n-m+i]的值赋给brr[i]
部分数组元素调换_第2张图片
2.再将arr的前7项分别向后移3位
注意:
此方法下只能先将后面的数往后移 ,即7先往后移,如果先移1的话,就会把后面的值覆盖
在这里插入图片描述
所以从7开始传 7的下标6,即(n-m-1)
在这里插入图片描述
3再将brr中的8,9,10赋给arr
部分数组元素调换_第3张图片
部分数组元素调换_第4张图片

你可能感兴趣的:(部分数组元素调换)