如何将数组中的后面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; }
效果如图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。