数组移位
1. 问题描述
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一子程序实现以上功能。
2. 算法分析
比如n=10,m=4,我们的目的是把后面4个数变成前面四个数,原始数组是1到10的顺序排列,
首先定义个循环变量 i,i从1循环到m(本例中m=4,后面不再指定)。
当 i = 1 时,我们交换第1个与第 n-m+i 个数字
当 i = 2 时,我们交换第 2 个与第 n-m+i 个数字
当 i = 3 时,我们交换第 3 个与第 n-m+i 个数字
当 i = 4 时,我们交换第 4 个与第 n-m+i 个数字
循环结束后,结果如下:
从上面的分析可以看出来,当m<=n/2时,是可以完成数组移位的,对于另外的变体题目,可以采取类似的方式分析,然后再利用Raptor流程图实现。
3. 流程图
主图:
实现题目功能的子程序:
展示数据的子程序: