如何将数组中的后面m个数移动为前面m个数

思路分析:

可以通过递归的方法实现调整:

(1)将前n-m个元素的顺序颠倒。

(2)将后面m个元素的顺序颠倒。

(3)将n个元素的顺序全部颠倒。

通过以上3个步骤的执行,就可以把数组的元素颠倒。

代码如下:

#include "stdafx.h"
#include <stdio.h>
void func(int* start, int* end)
{
    while (start < end)
    {
        int temp = *start;
        *start = *end;
        *end = temp;
        start++;
        end--;
    }
}
void f(int n, int m, int* numbers)
{
    func(numbers, numbers + n-m - 1);//前n-m个数顺序颠倒
    func(numbers + n-m, numbers + n - 1);//后m个数顺序颠倒
    func(numbers, numbers + n - 1);//所有数顺序颠倒
}
int main()
{
    int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int len = sizeof(array) / sizeof(array[0]);
    int i;
    f(len, 7, array);
    for (i = 0; i < len; i++)
        printf("%d ", array[i]);
    getchar();
    return 0;
}

    效果如图:

原文地址:https://www.cnblogs.com/cysolo/p/3598200.html