有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。

来源:互联网 发布:旋转矩阵的逆矩阵 编辑:程序博客网 时间:2024/06/05 19:12
/*有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。如12345后移3位之后变为34512.*/#include <stdio.h>void reverse_array(int *a, int len, int start, int end);int main (int argc, char *argv[]){int i;int array[10] = {1,2,3,4,5,6,7,8,9,0};reverse_array(array,10, 0, 9);reverse_array(array,10, 0, 2);reverse_array(array,10, 3, 9);for(i=0; i<10; i++){printf("%d,",array[i]);}putchar('\n');return 0;}void reverse_array(int *a, int len, int start, int end){int tmp;if(end <= len){while(start < end){tmp = a[start];a[start] = a[end];a[end] = tmp;start++;end--;}}}

分析:第一步,间将怎个数组倒叙排列变为                                        0,9,8,7,6,5,4,3,2,1

            第二步,根据输入的移动次数,将前m (此处m = 3)个倒叙,现在数组为8,9,0,7,6,5,4,3,2,1

    第三步,将后面几个倒叙,                                                        8,9,0,1,2,3,4,5,6,7

1 0