首页 > 移动平台 > 详细

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

时间:2014-03-14 19:07:31      阅读:548      评论:0      收藏:0      [点我收藏+]

思路分析:

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

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

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

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

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

代码如下:

bubuko.com,布布扣
#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;
}
bubuko.com,布布扣

    效果如图:

bubuko.com,布布扣

如何将数组中的后面m个数移动为前面m个数,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/cysolo/p/3598200.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!